注册 登录
编程论坛 汇编论坛

高手帮忙看看这个程序

☆白开水 发布于 2011-10-31 22:51, 556 次点击
DATA SEGMENT
     BUF1 DW 8234H,8234H,45H,23H,16H
     BUF2 DD   5 DUP(0)
DATA ENDS
CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
       MOV DS,AX
       MOV ES,AX
       MOV CX,5
       MOV DI,0
    AA:MOV SI,OFFSET [BUF1+DI]
       MOV AX,[BUF1+DI]
       TEST AX,AX
       JS BB
       MOV AL,1
       MOV BYTE PTR [SI+2],AL
    BB:SHL AX,1
       MOV WORD PTR [BUF2+DI],AX
       LOOP AA
       MOV SI,OFFSET BUF2
       MOV BX,WORD PTR [BUF2]
       MOV DL,[SI+2]
       MOV AH,4CH
       INT 21H
CODE ENDS
END START

为什么执行完之后 DX中不是0001,而是0000???为什么 MOV AL,1
                                                     MOV BYTE PTR [SI+2],AL 就好像没执行一样???求教

2 回复
#2
kabbin2011-11-01 17:43
你少了一条增加DI值的语句,这样每次循环,AX的值都为8234H,每次执行JS BB都跳到BB处。
另外,我觉得AA:MOV SI,OFFSET [BUF1+DI]处应改为
AA:MOV SI,OFFSET BUF2才能得到你想要的结果,DX=0001
#3
chenwei4352011-11-01 20:30
你的程序根本上就不对,di根本上就不会变,都是0,所以dl一直是0,我看二楼改了后也是不对的
1