Как сохранить число dw в переменной типа dd? - Assembler

Узнай цену своей работы

Формулировка задачи:

есть процедура ввода числа
Листинг программы
  1. input PROC
  2. nextnum:
  3. mov ah,01h ;enter new symb
  4. int 21h
  5. cmp al,2fh
  6. jl ofe
  7. cmp al,30h ; if new symb <0
  8. jl ofe
  9. cmp al,39h ; if new symb >9
  10. ja ofe
  11. sub al,30h ; symb to number
  12. xor ah,ah
  13. xchg ax,bx
  14. mov dx,0Ah
  15. mul dx ; mul*10
  16. add bx,ax ;+new=sum
  17. mov cx,ax
  18. jmp nextnum
  19. ofe:
  20. mov ah,02h
  21. mov dl,0Ah
  22. int 21h
  23. ret
  24. input endp
само число записывается в bx, bx 16 разрядов,проблема в том чтобы как записать это число в переменную формата dd?

Решение задачи: «Как сохранить число dw в переменной типа dd?»

textual
Листинг программы
  1.     ;Пусть тут в al цифра 0..9
  2.     mov ah, 0
  3.     push    ax
  4.     mov ax, word ptr chislo+2   ;ст.слово chislo
  5.     mov bx, 10
  6.     mul bx
  7.     mov cx, ax
  8.     mov ax, word ptr chislo ;мл.слово chislo
  9.     mul bx
  10.     pop bx
  11.     add ax, bx
  12.     adc dx, cx
  13.     mov word ptr chislo, ax
  14.     mov word ptr chislo+2, dx

Объяснение кода листинга программы

  1. Пусть тут в al цифра 0..9 — это инструкция, которая устанавливает значение регистра al в одну из цифр от 0 до 9.
  2. mov ah, 0 — это инструкция, которая сохраняет значение регистра al в регистре ah.
  3. push ax — это инструкция, которая помещает значение регистра ax в стек.
  4. mov ax, word ptr chislo+2 — это инструкция, которая загружает в регистр ax значение по адресу chislo+2.
  5. mov bx, 10 — это инструкция, которая сохраняет значение 10 в регистре bx.
  6. mul bx — это инструкция, которая выполняет умножение значения регистра ax на значение регистра bx и сохраняет результат в регистре ax.
  7. mov cx, ax — это инструкция, которая сохраняет значение регистра ax в регистре cx.
  8. mov ax, word ptr chislo — это инструкция, которая загружает в регистр ax значение по адресу chislo.
  9. mul bx — это инструкция, которая выполняет умножение значения регистра ax на значение регистра bx и сохраняет результат в регистре ax.
  10. pop bx — это инструкция, которая извлекает значение из стека и сохраняет его в регистре bx.
  11. add ax, bx — это инструкция, которая выполняет сложение значения регистра ax и значения регистра bx и сохраняет результат в регистре ax.
  12. adc dx, cx — это инструкция, которая выполняет сложение значения регистра dx и значения регистра cx и сохраняет результат в регистре dx.
  13. mov word ptr chislo, ax — это инструкция, которая сохраняет значение регистра ax по адресу chislo.
  14. mov word ptr chislo+2, dx — это инструкция, которая сохраняет значение регистра dx по адресу chislo+2.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы