回 帖 发 新 帖 刷新版面

主题:请教?/??

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个回复)

沙发

???,茫然。。。
假定DS内容是数据段段址,运行结果:ax=6690h,loop执行cx规定次数(2次,为6时6次)

板凳


那八字节数列是多少

3 楼

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 楼

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 楼

你的程序写错了,上面我已经该正了

6 楼

“array db 0AAH,55H,0AAH,55H,0AAH,55H,0AAH,55H”可以改成
"ARRAY DB 4 DUP(0AAH,55H)"省得你写那么长
顺便问一下上面那个“ROR AX ,1”中的ROR是什么指令?

我来回复

您尚未登录,请登录后再回复。点此登录或注册