当输出一位十进制的时候,情况比较简单
add ax,30H;转换为ASCII码
mov dx,ax
mov ah,2
int 21H ;显示十进制数数
当输出两位数以上的时候,就要注意压栈与出栈了:
除数是8位的时候要压AX,除数是16位时候要压DX
下面是一个显示1加到100的程序,显示位四位数字
供你参考,程序是我自己写的:
DATA SEGMENT
MSG DB '1+2+3+4+5+...+99+100=$'
DATA ENDS
STACK SEGMENT PARA STACK 'STACK'
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA
START:
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
mov dx,offset msg
mov ah,9
int 21h
mov cx,100
mov ax,0
mov bx,0
one:
inc bx
adc ax,bx
dec cx
jnz one
mov bx,1000 ;相除
div bx
push dx
add al,30H ;求ASCII值
mov dl,al ;DOS系统功能调用,显示
mov ah,2
int 21H
pop dx
mov ax,dx
mov dx,0
mov bx,100 ;相除
div bx
push dx
add al,30H ;求ASCII值
mov dl,al ;显示
mov ah,2
int 21H
pop dx
mov ax,dx
mov dx,0
mov bx,10 ;相除
div bx
push dx
add al,30H ;求ASCII值
mov dl,al ;显示
mov ah,2
int 21H
pop dx
mov ax,dx
add ax,30H
mov dx,ax
mov ah,2
int 21H
HLT
code ends
end start
温馨提示:答案为网友推荐,仅供参考