章节目录
作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人,指出错误, 避免后来读者再学习错误的知识.谢谢!
本文中所有程序均在DOSBox下使用MASM, LINK编译运行
简单程序
- segment…ends: 伪指令, 用来定义一个段(比如,代码段,数据段,堆栈段), segment 标识一个段的开始, ends 标识一个段的结束.
-
语法:
SegmentName segment
..
SegmentName ends - assume: 伪指令, 它假设某一段寄存器和程序中的某一个用 segment..ends 定义的段相关联.
-
mov ax, 4c00h
int 21h
称为程序返回,它的作用是将 CPU 的控制权交还给使他得以运行的程序.
-
使用段
使用 assume 将我们定义的数据段,堆栈段,代码段和对应的段寄存器关联起来.
cs 寄存器对应代码段
ds 寄存器对应数据段
ss 寄存器对应堆栈段值得注意, 我们在访问数据段或者堆栈段的时候,总是将段基址先保存在 ax 中,然后由 ax 保存到 ds 或者 ss. 为什么不直接将段基址保存到 ds 或者 ss 中? 答案是该操作非法.
简单字符串处理程序
在这里, 我们使用 bx + offset 的语法访问数据段中的字符串. 相应的字符的地址计算方法为 addr=ds