| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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就够了。 
 
 
 
 |   
 
 
 
 |