当前位置: 代码迷 >> 汇编语言 >> 将a段八个字型数据,逆序存储到b段中
  详细解决方案

将a段八个字型数据,逆序存储到b段中

热度:6260   发布时间:2013-02-26 00:00:00.0
将a段8个字型数据,逆序存储到b段中
Assembly code
assume cs:codea segment    dw 1, 2, 3, 4, 5, 6, 7, 8a endsb segment    dw 0, 0, 0, 0, 0, 0, 0, 0    b endscode segmentstart:    mov ax, b    mov ss, ax    mov sp, 0010h    mov ax, a    mov ds, ax        mov bx, 0    mov cx, 8    s: push [bx]    add bx, 2    loop s        mov ah, 4ch    int 21h    code endsend start


如图,为什么从ss开始是顺序存放的?

------解决方案--------------------------------------------------------
因为你PUSH的时候是栈顶,所以是高位,所以就出现你不想出现的情况了


mov bx, 8
mov cx, 8
s: push [bx]
sub bx, 2
loop s

试试这样吧
------解决方案--------------------------------------------------------
我这里正常,难道栈增长方向不一样?
------解决方案--------------------------------------------------------
引用
13DC:0008 B8DA13 MOV AX,13DA
13DC:000B 8ED8 MOV DS,AX
13DC:000D BB0000 MOV BX,0000
13DC:0010 B90800 MOV CX,0008
13DC:0013 FF37 PUSH [BX]
13DC:0015 83C302 ADD BX,+02
13DC:0018 E2F9 LOOP 0013
13DC:001A B44C MOV AH,4C
13DC:001C CD21 INT 21
13DC:001E FF5E8B CALL FAR [BP-75]
-g 1a

AX=13DA BX=0010 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=13DA ES=13CA SS=13DB CS=13DC IP=001A NV UP EI PL NZ AC PO NC
13DC:001A B44C MOV AH,4C
-d ss:0
13DB:0000 08 00 07 00 06 00 05 00-04 00 03 00 02 00 01 00 ................
13DB:0010 B8 DB 13 8E D0 BC 10 00-B8 DA 13 8E D8 BB 00 00 ................
13DB:0020 B9 08 00 FF 37 83 C3 02-E2 F9 B4 4C CD 21 FF 5E ....7......L.!.^
13DB:0030 8B E5 5D C3 83 3E 56 07-20 72 0A B8 1C 04 50 E8 ..]..>V. r....P.
13DB:0040 62 44 83 C4 02 B8 FF FF-50 B8 05 00 50 8D 86 7A bD......P...P..z
13DB:0050 FE 50 E8 4B 10 83 C4 06-8B 1E 56 07 D1 E3 D1 E3 .P.K......V.....
13DB:0060 A1 3A 21 8B 16 3C 21 89-87 BE 22 89 97 C0 22 80 .:!..<!..."...".
13DB:0070 3E 45 07 00 74 0A FF 36-56 07 E8 21 FC 83 C4 02 >E..t..6V..!....
  相关解决方案