DOS сборка Простая математика - PullRequest
1 голос
/ 28 октября 2009

У меня есть номер, сохраненный в dl, и мне нужно, чтобы он работал для чисел до трех цифр? Вот рабочий код для цифр 0-9.

WriteNumber:
;; print out number in dl
push ax
push dx
add dl,"0"
mov ah,02h ; printing one char
int 21h
pop dx
pop ax
ret

Например, для двух цифр. Я мог бы взять дл / 10. А затем распечатать результат и остальное, что касается различных символов. Но я получил ошибку, потому что номер должен быть в регистре AX для DIV.

Мне нужно сделать это:

мув топор, дл

Но это не сработает?

Ответы [ 2 ]

1 голос
/ 28 октября 2009

Я не думаю, что вы сможете сделать

mov ax,dl

поскольку топор и дл имеют разные размеры. Вы должны быть в состоянии сделать

mov ax, dx

или из ГДж:

movzx ax, dl

А затем просто укажите dl и al, если вам нужен только последний байт.

0 голосов
/ 28 октября 2009

Мне нужно сделать это:

мов топор, дл

Но это не сработает?

mov будет работать, если регистры имеют одинаковый размер, 8-битный или 16-битный или 32-битный.

Пример:

mov EAX, EDX
; or
mov AX, DX
; or
mov AL, DL
...