I come, I see, I conquer

                    —Gaius Julius Caesar

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

 

(1) 代码段中使用数据

 

编程计算8个数据的和,结果保存在ax中。代码如下:

code segment
assume 
cs:code
    dw 0123H,0456H,0789H,00bcH,00efh,0667h,072fh,0990H
    
mov bx,0
    
mov ax,0
    
mov cx,8
s:  add ax,cs:[bx]
    
add bx,2
    loop s
    
mov ax,4c00h
    
int 21h
code ends
end

 

用debug调试跟踪如下:

 

Debug跟踪,修改ip指向代码,让程序合法运行:

 

修改源代码,指明程序入口,使程序合法化:

code segment
assume 
cs:code
    dw 0123H,0456H,0789H,00bcH,00efh,0667h,072fh,0990H
start:   mov bx,0
       
mov ax,0
        
mov cx,8
s:       add ax,cs:[bx]
        
add bx,2
         loop s
        
mov ax,4c00h
        
int 21h
code ends
end start

 

 

(2) 代码段中使用栈

 

利用栈将程序中定义的数据逆序存放:

code segment
assume 
cs:code
    dw 0123H,0456H,0789H,00bcH,00efh,0667h,072fh,0990H
    dw 
0,0,0,0,0,0,0,0
start:    mov ax,cs
         
mov ss,ax
         
mov sp,32; 设置栈顶ss:sp指向cs:32
         
mov bx,0
         
mov cx,8
s:        push cs:[bx]
         
add bx,2
          loop s
         
mov bx,0
         
mov cx,8
s0:       pop cs:[bx]
         
add bx,2
          loop s0
         
mov ax,4c00h
         
int 21h
code ends
end start; 指明程序的入口在start处

 

 

 

posted on 2011-06-12 18:33  jcsu  阅读(1045)  评论(0)    收藏  举报