汇编 用10进制输出一个大于10的数

来源:百度知道 编辑:UC知道 时间:2024/05/22 04:04:05
比如让 让SUM为11,怎么输出11而不是ASC码的‘;’?

; 下面的程序是16位汇编,以十进制数89158为例,编译通过,运行正确。

; Program Name: Dec_ASCII.asm

Dec_ASCII SEGMENT
ASSUME CS:Dec_ASCII,DS:Dec_ASCII
ORG 100H

Start: jmp Begin

ASCII DB 5 dup(' ') ;保存十进制无符号数的ASCII
ASCII_End DB '$' ;字符串结束标志

Decimal DW 89158 ; 十进制无符号数,最大65535。

Begin: lea di,ASCII_End ; 字符串尾地址
dec di
mov bx,10 ; 用于除10,取商数和余数
std ;设置变址寄存器变址方向
mov ax,Decimal ; 取十进制无符号数

ASCII_Ctr: xor dx,dx
div bx ; 除10,取商数和余数
xchg ax,dx ;交换商数和余数
or al,30h ;转换成ASCII码
stosb ;保存ASCII码
mov ax,dx ;把商数放入ax中
cmp ax,0
ja ASCII_Ctr ;商数大于0,继续取余数

lea dx,ASCII ;字符串首地址
mov ah,9 ; 显示结果
int 21h

Exit_Proc: mov ax,4c00h ;结束程序
int 21h

Dec_ASCII ENDS
END Start

可以让sum除以10,得到余数,再将该