汇编语言学习笔记(六)包含多个段的程序

6.1在代码段中使用数据

dw 定义字型数据:define word
db 定义字节数据:define byte

assume cs:codesg
code segment
    dw 0123h,0456h(偏移地址从0、2、4、6...)
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
在定义数据的时候,一定要指定程序的入口,否则cpu容易将数据混淆成指令。
end:除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。

利用栈实现逆序
assume cs:codesg
codesg segment
    dw 0123h,0456h,0789h....
    dw 0,0,0....
start:mov ax,cs
    mov ss,ax
    mov sp,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
codesg ends
end start


6.3将数据、代码、栈放入不同的代码段
时刻要记住8086(16位)中的段容量不能大于64KB(2^5)
assume cs:code,ds:data,ss:stack
data segment
...
data ends

stack segment
...
stack ends

code segment
...
code ends

data段使用
mov ax,data
mov ds,ax
data:[6]



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值