Как сохранить число 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.