到目前为止,我已经想出了一种如何从输入中获取Integers以及如何输出它们的方法。如果我可以执行整数除法,那将会很酷。有人可以告诉我它基本上是如何完成的吗?为什么我收到这个错误?
以下是代码:
.MODEL SMALL
.STACK 200h
.DATA
InAMess DB 'Enter A:',0ah,'$'
InBMess DB 'Enter B:',0ah,'$'
Res DB 'Result of two integer division:$'
a dw 0
b dw 0
.CODE
start:
mov ax, @Data
mov ds, ax
jmp action
inputNumber proc
nextchar:
mov ah, 01h
int 21h
cmp al, 2fh
jl outp
sub al, 30h
xor ah, ah
xchg ax, bx
mov dx, 0Ah
mul dx
add bx, ax
jmp nextchar
outp:
ret
inputNumber endp
OutputNumber proc
aam
add ax, 3030h
mov dl, ah
mov dh, al
mov ah, 02
int 21h
mov dl, dh
int 21h
ret
OutputNumber endp
action:
mov ah, 9h
mov dx, OFFSET InAMess
int 21h
call InputNumber
mov a, bx
mov bx, 0
mov ah, 9h
mov dx, OFFSET InBMess
int 21h
call InputNumber
mov b, bx
mov bx, 0
mov ah, 9h
mov dx, OFFSET Res
int 21h
;Here it is
mov dx,0
mov dx:ax, a
div b
mov ax, a
call OutputNumber
mov ah, 4ch
mov al, 0
int 21h
END start
答案 0 :(得分:4)
mov dx:ax, a
无效。 dx:ax
符号仅表示您应将高位词放入dx
,将低位词放入ax
。由于您的a
只是一个单词,并且未签字,因此您可以将其放入ax
和零dx
(您已经完成)。所以:
mov dx, 0
mov ax, a
div b