Как сохранить число dw в переменной типа dd? - Assembler
Формулировка задачи:
есть процедура ввода числа
само число записывается в bx, bx 16 разрядов,проблема в том чтобы как записать это число в переменную формата dd?
Листинг программы
- 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
Решение задачи: «Как сохранить число 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
Объяснение кода листинга программы
- Пусть тут в al цифра 0..9 — это инструкция, которая устанавливает значение регистра al в одну из цифр от 0 до 9.
- mov ah, 0 — это инструкция, которая сохраняет значение регистра al в регистре ah.
- push ax — это инструкция, которая помещает значение регистра ax в стек.
- mov ax, word ptr chislo+2 — это инструкция, которая загружает в регистр ax значение по адресу chislo+2.
- mov bx, 10 — это инструкция, которая сохраняет значение 10 в регистре bx.
- mul bx — это инструкция, которая выполняет умножение значения регистра ax на значение регистра bx и сохраняет результат в регистре ax.
- mov cx, ax — это инструкция, которая сохраняет значение регистра ax в регистре cx.
- mov ax, word ptr chislo — это инструкция, которая загружает в регистр ax значение по адресу chislo.
- mul bx — это инструкция, которая выполняет умножение значения регистра ax на значение регистра bx и сохраняет результат в регистре ax.
- pop bx — это инструкция, которая извлекает значение из стека и сохраняет его в регистре bx.
- add ax, bx — это инструкция, которая выполняет сложение значения регистра ax и значения регистра bx и сохраняет результат в регистре ax.
- adc dx, cx — это инструкция, которая выполняет сложение значения регистра dx и значения регистра cx и сохраняет результат в регистре dx.
- mov word ptr chislo, ax — это инструкция, которая сохраняет значение регистра ax по адресу chislo.
- mov word ptr chislo+2, dx — это инструкция, которая сохраняет значение регистра dx по адресу chislo+2.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д