. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->[bx]和loop指令
主题 : :  【练习】两段连续地址单元内容的交换  [已解决] 回复[ 5次 ]   点击[ 335次 ]  
regex
[帖 主] [ 发表时间:2010-01-07 15:31 ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
d:\asm>type ch.asm
assume  cs:code
code    segment
dw      1111h,2222h,3333h
dw      0aaaah,0bbbbh,0cccch

start:  mov ax,cs
        mov ds,ax
        mov bx,0
        mov cx,6

s:      mov dh,[bx]
        mov dl,[bx+6]
        mov [bx],dl
        mov [bx+6],dh
        inc bx
        loop s

        mov ah,4ch
        int 21h

code    ends
end     start

d:\asm>debug ch.exe
-d cs:0 c
13B4:0000  11 11 22 22 33 33 AA AA-BB BB CC CC 8C            ..""33.......
-g 0023

AX=13B4  BX=0006  CX=0000  DX=33CC  SP=0000  BP=0000  SI=0000  DI=0000
DS=13B4  ES=13A4  SS=13B4  CS=13B4  IP=0023   NV UP EI PL NZ NA PE NC
13B4:0023 B44C          MOV     AH,4C
-t

AX=4CB4  BX=0006  CX=0000  DX=33CC  SP=0000  BP=0000  SI=0000  DI=0000
DS=13B4  ES=13A4  SS=13B4  CS=13B4  IP=0025   NV UP EI PL NZ NA PE NC
13B4:0025 CD21          INT     21
-p

Program terminated normally
-d cs:0 c
13B4:0000  AA AA BB BB CC CC 11 11-22 22 33 33 8C            ........""33.
-

--------------------------------------------------------------------------
开始看第六章啦, 我觉得不把前五章的知识吃透的话, 难度会越来越大!
regex
[第1楼] [ 回复时间:2010-01-07 15:49 ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
改进了一下, 去掉了两行多余代码, 用段前缀显式的表明内存地址
d:\asm>type ch1.asm
assume  cs:code
code    segment
dw      1111h,2222h,3333h
dw      0aaaah,0bbbbh,0cccch

start:
        mov bx,0
        mov cx,6

s:      mov dh,cs:[bx]
        mov dl,cs:[bx+6]
        mov cs:[bx],dl
        mov cs:[bx+6],dh
        inc bx
        loop s

        mov ah,4ch
        int 21h

code    ends
end     start

d:\asm>
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved