完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我尝试过好多次了,不知道怎么把不定长度的16进制数转化为BCD码后再转化为ASCII码,我用定义缓冲区的方法来输入,但是不能成功将其转化为bcd码,要求是最多可以把8位的16进制数转化为ASCII码,这个是2位的16进制数转ASCII码,请大佬救救我。
DATA SEGMENT BCDM DB 3 DUP (0) ASCI DB 3 DUP(0) string_1 db 'please input a num: $' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET BCDM MOV DI,OFFSET ASCI LEA DX,string_1 mov ah,09h int 21h;从键盘上读第一个字符 mov AH,01h INT 21h sub al,30h;先减去30h 再判断是数字 还是a~f cmp al,10 *** shuzi ;是数字 跳转 sub al,07h;是字母a~f 则还要再减去07h mov cl,4 shl al,cl ;左移4位,相当于乘以16 mov bl,al jmp in_2 shuzi: mov cl,4 shl al,cl mov bl,al in_2: mov ah,01h;输入第二个字符 int 21h sub al,30h cmp al,10 *** shuzi_2 sub al,07h add bl,al jmp change shuzi_2: add bl,al change: mov bh,0 mov ax,bx MOV BL,0 MOV BL,100 DIV BL MOV [SI+2],AL MOV [DI+2],AL ADD BYTE PTR[DI+2],30H MOV AL,AH MOV AH,0 MOV BL,10 DIV BL MOV [SI+1],AL MOV [DI+1],AL ADD BYTE PTR [DI+1],30H MOV [SI],AH MOV [DI],AH ADD BYTE PTR[DI],30H MOV AH,4CH INT 21H CODE ENDS END START |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1409 浏览 0 评论
888 浏览 0 评论
VirtualLab Fusion应用:具有高数值孔径的反射显微镜系统
694 浏览 0 评论
599 浏览 0 评论
VirtualLab Fusion应用:相干时间和相干长度计算器
588 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-3 20:59 , Processed in 0.555894 second(s), Total 69, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号