主题:请教?/??
louisapple
[专家分:0] 发布于 2006-11-02 08:59:00
data segment
array db 0AAH,55H,0AAH,55H,0AAH,55H,0AAH,55H
data ends
code segment
mov cx, 2
mov si, offset array
start: mov ax, word ptr [si]
xchg ah, al
ror ax, 1
inc si
xor [si], ax
add si, 7
and si, 7
loop start
code ends
请问运行后AX的数值是多少,还有把MOV CX,2改6,那个LOOP会运行多少次
回复列表 (共6个回复)
沙发
cnhanxiao [专家分:450] 发布于 2006-11-02 09:36:00
???,茫然。。。
假定DS内容是数据段段址,运行结果:ax=6690h,loop执行cx规定次数(2次,为6时6次)
板凳
louisapple [专家分:0] 发布于 2006-11-02 13:50:00
那八字节数列是多少
3 楼
cnhanxiao [专家分:450] 发布于 2006-11-03 19:19:00
c:\>debug test.exe
-r
AX=0000 BX=0000 CX=0030 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=1453 ES=1453 SS=1463 CS=1464 IP=0000 NV UP EI PL NZ NA PO NC
1464:0000 B86314 MOV AX,1463
-u
1464:0000 B86314 MOV AX,1463
1464:0003 8ED8 MOV DS,AX
1464:0005 B90200 MOV CX,0002 ; mov cx, 2
1464:0008 BE0000 MOV SI,0000 ; mov si, offset array
1464:000B 8B04 MOV AX,[SI] ;start: mov ax, word ptr [si]
1464:000D 86E0 XCHG AH,AL ; xchg ah, al
1464:000F D1C8 ROR AX,1 ; ror ax, 1
1464:0011 46 INC SI ; inc si
1464:0012 3104 XOR [SI],AX ; xor [si], ax
1464:0014 83C607 ADD SI,+07 ; add si, 7
1464:0017 83E607 AND SI,+07 ; and si, 7
1464:001A E2EF LOOP 000B ; loop start
1464:001C B44C MOV AH,4C
1464:001E CD15 INT 21
-g 1464:001c
AX=D53F BX=0000 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=1463 ES=1453 SS=1463 CS=1464 IP=001C NV UP EI PL ZR NA PE NC
1464:001C B44C MOV AH,4C
-d 1463:0000 002f
1463:0000 AA 40 AA 55 AA 55 AA 55-00 00 00 00 00 00 00 00 .@.U.U.U........
1463:0010 B8 63 14 8E D8 B9 02 00-BE 00 00 8B 04 86 E0 D1 .c..............
1463:0020 C8 46 31 04 83 C6 07 83-E6 07 E2 EF B4 4C CD 21 .F1..........L.!
-q
抱歉,上次不知怎么搞错了。应该是:
ax=D53Fh,loop执行2次(cx改成6则执行6次)。
数据段定义的8字节在执行后为:AA 40 AA 55 AA 55 AA 55 (均为hex)。
4 楼
一颗星 [专家分:230] 发布于 2006-11-05 16:11:00
data segment
array db 0AAH,55H,0AAH,55H,0AAH,55H,0AAH,55H
data ends
code segment
ASSUME CS:CODE,DS:DATA
start: MOV AX,DATA
MOV DS,AX
mov cx, 2
mov si, offset array
mov ax, word ptr [si]
xchg ah, al
ror ax, 1
inc si
xor [si], ax
add si, 7
and si, 7
loop start
code ends
END START
5 楼
一颗星 [专家分:230] 发布于 2006-11-05 16:13:00
你的程序写错了,上面我已经该正了
6 楼
wenzhuo [专家分:170] 发布于 2006-11-06 17:36:00
“array db 0AAH,55H,0AAH,55H,0AAH,55H,0AAH,55H”可以改成
"ARRAY DB 4 DUP(0AAH,55H)"省得你写那么长
顺便问一下上面那个“ROR AX ,1”中的ROR是什么指令?
我来回复