程序段求完善
寄存器BX中有4位0~9的十六进制数,编写程序段,将其转换为对应字符(即ASCII码),按从高到底的顺序分别存入L1,L2,L3,L4四个字节单元中。我的程序段如下:
MOV CL,4
MOV AL,BL
AND AL,0FH
CMP AL,0AH
JC DIGT4
ADD AL,7
DIGT4:ADD AL,30H
MOV L4,AL
MOV AL,BL
SHR AL,CL
CMP AL,0AH
JC DIGT3
ADD AL,7
DIGT3:ADD AL,30H
MOV L3,AL
MOV AL,BH
AND AL,0FH
CMP AL,0AH
JC DIGT2
ADD AL,7
DIGT2:ADD AL,30H
MOV L2,AL
MOV AL,BH
SHR AL,CL
CMP AL,0AH
JC DIGT1
ADD AL,7
DIGT1:ADD AL,30H
MOV L1,AL
老师说我的程序段有问题,但是我不知道怎么改,求大神完善!~
第一段比较跳转后的add al,7是何意思?题意是4位数都是0-9的,比较出来不是0-9的应该是不符合题意的,理应放弃转换程序跳转到下一个位继续比较,楼主为何要做add转换成0-9?这个也是不符合题意的,题目上没说要让你把不是0-9的转换为0-9,确实有点问题,而且没有任何注释,让读的人自己猜测你的想法,有点烦人:sad mov cx,4
s:
push cx
mov cl,4
rol bx,cl
pop cx
mov al,bl
and al,ofh
cmp al,0ah
jc num
add al,7h
num:add al,30h
push ax ;入栈是从高到低
loop s
;出栈是从低到高
pop ax
mov L4,al
pop ax
mov L3,al
pop ax
mov L2,al
pop ax
mov L1,a1 testa001 发表于 2014-4-24 09:20 static/image/common/back.gif
第一段比较跳转后的add al,7是何意思?题意是4位数都是0-9的,比较出来不是0-9的应该是不符合题意的,理应放 ...
最近考试多没有上来看帖子,抱歉哈。你这么一说,我才发现我做了无用功。这程序段是我在作业本上打上来的,所以就没做了注释。总之谢谢你啦~:lol: vkevke_3437 发表于 2014-4-24 10:39 static/image/common/back.gif
mov cx,4
s:
push cx
一楼这么一说,确实是不用加上7H了,用出入栈的方法很好啊,学习到了:victory:
页:
[1]