首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

一个简单的汇编程序解决方法

2012-03-17 
一个简单的汇编程序以下代码是将al与bl中的数相加放入al,然后将al中的和用16进制数输出,按道理应该输出60h

一个简单的汇编程序
以下代码是将al与bl中的数相加放入al,然后将al中的和用16进制数输出,按道理应该输出60h,但是输出的却是63h,请问错在哪里?谢谢

prognam   segment

mainproc   far
assume   cs:prognam
start:
push   ds
sub   ax,ax
push   ax

mov   al,28
mov   bl,68
add   al,bl

mov   ch,2
rotate:   mov   cl,4
rol   al,cl
mov   bl,al
and   bl,0fh
add   bl,30h
cmp   bl,3ah
jl     printit
add   bl,7h

printit:mov   dl,bl
mov   ah,2
int   21h
dec   ch
jnz   rotate

ret
mainendp

prognam   ends
end

[解决办法]
AX=0236 BX=0036 CX=0104
此时AX 的值也发生了变化 0206--0236,所以输出结果才会是63,
可能是编译器的问题,具体我也不清楚,AX这个寄存器值老是变化不适合储存数据,修改方法很简单,把所以的AL很AB交换一下就好了,具体程序如下
prognam segment

main proc far
assume cs:prognam
start:
push ds
sub ax,ax
push ax

mov al,28
mov bl,68

add bl,al

mov ch,2
rotate: mov cl,4
rol bl,cl
mov al,bl
and al,0fh
add al,30h
cmp al,3ah
jl printit
add al,7h

printit:mov dl,al
mov ah,2
int 21h
dec ch
jnz rotate

ret
main endp

prognam ends
end

热点排行