code segment
assume cs:code
org 100h
start:
push cs
pop ds
mov ax,a
mov bx,b
add ax,bx
mov a,ax
call dispax
mov ah,4ch
int 21h
a dw 32767
b dw 32769
dispax proc near
; 以10进制数形式显示无符号字的值,要显示的值事先存 AX 中
push bx
push cx ;保存bx、cx、dx、si
push dx
push si
mov byte ptr nz,0 ; 状态,看是否已输出过非 0
push ax
lea si,divarr
mov cx,5
disp1:
pop ax
mov dx,0
mov bx,[si]
div bx
push dx
cmp al,0
jne disp2 ; 当 al不为0时输出
cmp byte ptr nz,1 ; 当al 为0时,再比较nz 是否为 1
je disp2 ; 等于1 表示前面已输出过非 0 应将 0 输出
cmp cx,1 ; 当最后一位仍 为0 时 输出 0 而非空格
je disp2
mov dl,20h
jmp disp3
disp2:
add al,30h
mov dl,al
mov byte ptr nz,1
disp3:
mov ah,2
int 21h
inc si
inc si
loop disp1
pop dx
pop si ; 恢复bx、cx、dx、si
pop dx
pop cx
pop bx
ret
divarr dw 10000,1000,100,10,1
nz db 0
dispax endp
code ends
end start
温馨提示:答案为网友推荐,仅供参考