;将16进制数转化为10进制并在屏幕上显示出来
assume cs:code,ds:data
data segment
db 10 dup (0)
data ends
code segment
start:
mov ax, 12666
mov bx, data
mov ds, bx
mov si, 0 ;ds:si指向字符串的首地址
call dtoc ;dtoc子程序实现将word型整数转化为字符串并存储
mov dh, 8 ;第8行
mov dl, 3 ;第3列
mov cl, 0caH
call show_str ;开始打印字符串
mov ax, 4C00H
int 21H
dtoc:
push dx
push cx
push ax
push si
push bx
mov bx, 0 ;bx在子程序中用来存放位数,用栈来临时存放修改后的字符
s1: mov cx, 10D ;d表示十进制
mov dx, 0 ;16位除法,ax存放商,dx存放余数
div cx ;除以十
mov cx, ax ;得到的商赋值给cx,这样才能通过jcxz判断何时结束
jcxz s2 ;当商为0则跳到s2
add dx, 30H ;将余数加上30H后得到相应的ASCII码
push dx
inc bx
jmp short s1
s2: add dx, 30H ;当商为0的时候,余数为个位
push dx
inc bx ;再进行一次栈操作(补充当”商为零而余数不为零“时的情况)
mov cx, bx ;总共有bx位进栈了,所以循环次数为bx
mov si, 0
s3: pop ax ;s3实现将栈中的数据依次出栈放到指定内存中
mov [si], al
inc si
loop s3
okay: pop bx
pop si
将16进制数转化为10进制并在屏幕上显示出来
最新推荐文章于 2024-04-17 10:45:00 发布
;将16进制数转化为10进制并在屏幕上显示出来assume cs:code,ds:datadata segment db 10 dup (0)data endscode segmentstart: mov ax, 12666 mov bx, data mov ds, bx mov si, 0 ;ds:si指向字符串的首地址 call dtoc...
摘要由CSDN通过智能技术生成