【汇编语言-3】 代码、数据、堆栈在同一个段

 

(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处

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值