assume cs:code,ds:data
data segment
n dw ?
result dw ?
mark1 db 'please input n (from 00 to 99 ):','$'
mark2 db 'the result is ( in binary ):','$'
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ah,09h ;显示提示语
lea dx,mark1
int 21h
mov ah,1 ;输入n的高位
int 21h
mov dl,al
mov ah,1 ;输入n的低位
int 21h
mov cl,al
sub dl,30h ;将ASCII码转化为十进制
mov al,10
mul dl
mov ch,0
add cx,ax
mov ax,cx
mov n,ax
cmp ax,0 ;检测n是否为0
je l1
mov dx,n
loop fact
l1:
mov ah,09h ;显示提示语
lea dx,mark2
int 21h
mov bx,n
mov cx,8 ;以二进制形式输出结果
loop next1
mov cx,8
loop next2
next1 proc ;输出高八位
shl bh,1
mov dl,30h
adc dl,0
mov ah,2
int 21h
next1 endp
next2 proc
shl bl,1
mov dl,30h
adc dl,0
mov ah,2
int 21h
next2 endp
mov dl,'B' ;显示二进制标志
mov ah,2
int 21h
mov ah,4ch
int 21h
fact proc
mov ax,dx
mov bl,02h
div bl
cmp ah,0
jne l2
add al,al
l2:mul bl
add ax,result
mov result,ax
dec dx
fact endp
code ends
end start
这是我写的代码。不知道错误在哪里。
要求输入N是两位数,即00~99。
当n为奇数时,累加一次;当n为偶数时,累加两次。
从键盘输入n并输出结果。
编译通过了,但是输入第二个数时就自动关闭。
想请问代码错误出在哪里以及怎样修改这个代码。
感激不尽~