汇编语言教程-段寄存器的说明语句

汇编语言教程-段寄存器的说明语句
在汇编语言源程序中可以定义多个段,每个段都要与一个段寄存器建立一种对应关系。建立这种对应关系的说明语句格式如下:
assume段寄存器名:段名[,段寄存器名:段名,……]
其中:段寄存器是cs、ds、es、ss、fs和gs,段名是在段定义语句说明时的段名。
在一条assume语句中可建立多组段寄存器与段之间的关系,每种对应关系要用逗号分隔。例如,
assume cs:code1, ds:data1
上面的语句说明了:cs对应于代码段code1,ds对应于数据段data1。
在assume语句中,还可以用关键字nothing来说明某个段寄存器不与任何段相对应。下面语句说明了段寄存器es不与某段相对应。
assume es:nothing
在通常情况下,代码段的第一条语句就是用assume语句来说明段寄存器与段之间的对应关系。在代码段的其它位置,还可以用另一个assume语句来改变前面assume语句所说明的对应关系,这样,代码段中的指令就用最近的assume语句所建立的对应关系来确定指令中的有关信息。
例6.1汇编语言段及其段说明语句的作用。
data1segment;定义数据段data1
word1dw5678h
byte1db\abcdefg\
data1ends
data2segment;定义数据段data2
word2dw1234h
word3dw9876h
data2ends
data3segment;定义数据段data3
byte2db?
data3ends
code1segment;编写代码段code1
assumecs:code1, ds:data1, es:data2;(1)
movax, data1;(2)
movds, ax;(3)
movax, data2;(4)
moves, ax;(5)

movax, word1;访问段data1中的字变量word1
movword2, ax;访问段data2中的字变量word2

assumeds:data3, es:nothing;(6)
movax, data3
movds, ax
movbl, byte2;访问段data3中的字节变量byte2

movax, 4c00h;(7)
int21h;(8)
code1 ends
语句(1)和(6)分别说明了段和段寄存器之间的对应关系,其中语句(6)重新说明语句(1)所指定的对应关系。
二组语句(2)和(3)、(4)和(5)实现对段寄存器ds和es赋初值。assume说明语句只起说明作用,它不会对段寄存器赋值,所以,必须对有关段寄存器赋值。在以后的其它源程序中也都是用此方法来实现对数据段寄存器赋值的。
语句(7)和(8)是调用中断21h的4ch号功能来结束本程序的执行,程序的返回代码由寄存器al来确定。结束本程序执行的指令是所有主模块必须书写的语句。
注意:代码段寄存器不能由程序员在源程序中对其赋值,其值是由操作系统在装入它进入系统运行时自动赋值的。

PCB板中元器件的布局注意事项
如何破解室内污染?海信舒适家空净一体空调有妙招
讯维高清混合矩阵的常见问题
加入共熵志愿者团队,共筑全球科技未来
EEC数据库中发现的四款新Realme智能手机
汇编语言教程-段寄存器的说明语句
SpaceX的闪耀——猎鹰重型的首次商业发射
AI大数据下的云存储的关键技术是什么
怎样为自动驾驶做好辅助
人工智能与人脑相差甚远
改写摄影规则!华为P系列旗舰机型P30、P30 Pro国内正式发布,3988元起
快捷半导体推出特殊应用防反接保护元件
无线通信RF直接变频发送器
新手小白升级电脑时该如何选择固态硬盘?一篇千字长文告诉你
单轴测径仪的功能特点及应用
FPGA设计:GPIO怎么走全局时钟网络
硅基GaN为固态射频能量应用带来更多可能
无线三相电量采集模块的功能特点及系统组成
小米CC9美图定制版正式发布 售价2599元起
美国政府将制定新法规 无人驾驶汽车上路前先审批