200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 汇编语言实现十六进制数转换成十进制数

汇编语言实现十六进制数转换成十进制数

时间:2022-07-02 13:43:03

相关推荐

汇编语言实现十六进制数转换成十进制数

一 代码实现

DATAS SEGMENT org 2000hnum dw 65535org hres db 5 dup(?)db '$'DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATAS MOV DS,AX ;设计数据段mov SI,2000h ;结果存放指针mov AX,[SI] ;把存放结果的指针的地址传给AXmov DI,h ;用于显示的数据的ASCII码的存放指针mov bx,10000d ;2字节数小于10000xor dx,dx;异或运算相当于将dx置0div bx ;余数在dx中add al,30h ;将商的ASCII码加30h对应显示数字的字符的ASCII码用于显示mov [DI],al ;十进制最高位inc cx ;自增指令,使CX自增,读取下一位数据inc DI ;使指针DI自增1,指向存储下一位数字的地址mov ax,dx;把余数传给AXmov bx,1000d;除数xor dx,dx;异或运算相当于将dx置0div bx ;余数在dx中add al,30h;将商的ASCII码加30h对应显示数字的字符的ASCII码用于显示mov [DI],al ;十进制次高位inc cx ;自增指令,使CX自增,读取下一位数据inc DI ;使指针DI自增1,指向存储下一位数字的地址mov ax,dx;把余数传给AXmov bx,100d;除数xor dx,dx;异或运算相当于将dx置0div bx ;余数在dx中add al,30h;将商的ASCII码加30h对应显示数字的字符的ASCII码用于显示mov [DI],al ;十进制第3位inc cx;自增指令,使CX自增,读取下一位数据inc DI;使指针DI自增1,指向存储下一位数字的地址mov al,dl;把余数传给AXmov bl,10d;除数div bl ;余数在ah中add al,30h ;将商的ASCII码加30h对应显示数字的字符的ASCII码用于显示mov [DI],al ;十进制第4位inc cx;自增指令,使CX自增,读取下一位数据INC DI;使指针DI自增1,指向存储下一位数字的地址add ah,30h;将商的ASCII码加30h对应显示数字的字符的ASCII码用于显示mov [DI],ah ;十进制最低位LEA DX,res;把显示的ASCII的存储器偏移地址传给DX用于显示MOV AH,9;调用9号功能在屏幕上显示INT 21HMOV AH,8;无回显键盘输入INT 21HMOV AH,4CH;返回DOSINT 21HCODES ENDSEND START

可以看到从地址h开始存储的分别是36h,35h,35h,33h,35h,对应的是字符6,5,5,3,5.与num存储的十进制65535一致,结果正确。

把num的值改为12345,运行结果图如下

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。