|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
源代码如下:
assume cs:code,ds:data,ss:stack
data segment
db'welcome to masm!'
db 02h,24h,71h
data ends
stack segment
dw 8 dup(0)
stack ends
code segment
start:mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov bx,0
mov si,0
mov di,0
mov ax,0b872h
mov cx,3
s: push ax
push bx
push cx
mov es,ax
mov cx,10h
s0: mov al,ds:[bx]
mov es:[si],al
mov al,ds:10h[di]
mov es:[si+1],al
inc bx
add si,2
loop s0
inc di
pop cx
pop bx
pop ax
add ax,0ah
loop s
mov ax,4c00h
int 21h
code ends
end start
编译后运行后为什么是这种效果:
谢谢各位大神!!帮帮忙!
本帖最后由 贝壳 于 2012-9-3 17:20 编辑
再说简单点:
公式一: ax*16+si (十进制,下同)的结果构成了指针的地址,要想让指针指向下一行,需要让公式一的结果增加160。在上个循环里,si 增加了32,没有复原;ax的值被复原了。所以ax只需再增加8就够了。
|
|