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

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

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

есть процедура ввода числа
input PROC
nextnum:
   
    mov ah,01h  ;enter new symb
    int 21h
 
    cmp al,2fh 
    jl ofe
    cmp al,30h  ; if new symb <0
    jl ofe
    cmp al,39h  ; if new symb >9
    ja ofe
   
    sub al,30h  ; symb to number
    xor ah,ah
    xchg ax,bx
    mov dx,0Ah  
    mul dx  ; mul*10
    
    add bx,ax   ;+new=sum
    mov cx,ax
    jmp nextnum
    
     ofe:    
        mov ah,02h
        mov dl,0Ah
        int 21h
    ret
input endp
само число записывается в bx, bx 16 разрядов,проблема в том чтобы как записать это число в переменную формата dd?

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

textual
Листинг программы
    ;Пусть тут в al цифра 0..9
    mov ah, 0
    push    ax
    mov ax, word ptr chislo+2   ;ст.слово chislo
    mov bx, 10
    mul bx
    mov cx, ax
    mov ax, word ptr chislo ;мл.слово chislo
    mul bx
    pop bx
    add ax, bx
    adc dx, cx
    mov word ptr chislo, ax
    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
Похожие ответы