- 1、本文档共57页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
王爽第3版《汇编语言》讲稿16
《汇编语言》课件
王爽 著-清华大学出版社
制作工具:Microsoft PowerPoint2003
本课件由汇编网()制作提供
第16章 直接定址表
16.1 描述了单元长度的标号
16.2 在其他段中使用数据标号
16.3 直接定址表
16.4 程序入口地址的直接定址表
引言
这一章,我们讨论如何有效合理地组织数据,以及相关的编程技术。
16.1 描述了单元长度的标号
本章中,我们要用到这种标号,先进行如下介绍。
前面的课程中,我们一直在代码段中使用标号来标记指令、数据、段的起始地址。
16.1 描述了单元长度的标号
比如:下面的程序将code 段中的a 标号处的8个数据累加,结果存储到b标号处的字中。
程序代码
16.1 描述了单元长度的标号
assume cs:code
code segment
a : db 1,2,3,4,5,6,7,8
b : dw 0
start :mov si,offset a
mov bx,offset b
mov cx,8
s : mov al,cs:[si]
mov ah,0
add cs:[bx],ax
inc si
loop s
mov ax,4c00h
int 21h
code ends
end start
16.1 描述了单元长度的标号
程序中,code、a、b、start、s都是标号。这些标号仅仅表示了内存单元的地址。
但是,我们还可以使用一种标号,这种标号不但表示内存单元的地址,还表示了内存单元的长度,即表示在此标号处的单元,是一个字节单元,还是字单元,还是双字单元。
上面的程序我们还可以写成这样:程序
16.1 描述了单元长度的标号
assume cs:code
code segment
a db 1,2,3,4,5,6,7,8
b dw 0
start : mov si,0
mov cx,8
s : mov al,a[si]
mov ah,0
add b,ax
inc si
loop s
mov ax,4c00h
int 21h
code ends
end start
16.1 描述了单元长度的标号
我们在code 段中使用的标号a、b后面没有“:” ,它们是同时描述内存地址和单元长度的标号。
标号a,描述了地址code:0,和从这个地址开始,以后的内存单元都是字节单元;
而标号b描述了地址code:8,和从这个地址开始,以后的内存单元都是字单元。
16.1 描述了单元长度的标号
因为这种标号包含了对单元长度的描述,所以,在指令中,它可以代表一个段中的内存单元。
比如,对于程序中的b dw 0。
指令:mov ax,b
相当于:mov ax,cs:[8]
指令:mov b,2
相当于:mov word ptr cs:[8],2
指令:inc b
相当于:inc word ptr cs:[8]
在这些指令中,标号b 代表了一个内存单元,地址为code:8 ,长度为2 字节。
16.1 描述了单元长度的标号
下面的指令会引起编译错误: mov al,b
因为b代表的内存单元是字单元,而al 是8 位寄存器。
如果我们将程序中的指令:add b,ax ,写为add b,al,将出现同样的编译错误。
16.1 描述了单元长度的标号
对于程序中的a db 1,2,3,4,5,6,7,8 :
指令:mov al,a [si]
相当于:mov al,cs:0[si]
指令:mov al,a[3]
相当于:mov al,cs:0[3]
指令:mov al,a[bx+si+3]
相当于:mov al,cs:0[bx+si+3]
16.1 描述了单元长度的标号
可见,使用这种包含单元长度的标号, 可以使我们以简洁的形式访问内存中 的数据。
以后,我们将这种标号称为数据标号。
它标记了存储数据的单元的地址和长度。
它不同于仅仅表示地址的地址标号。
特别提示
检测点16.1(page289)
没有通过此检测点,请不要向下进行!
16.2 在其他段中使用数据标号
一般来说,我们不在代码段中定义数据,而是将数据定义到其他段中。
在其他段中,我们也可以使用数据标号来描述存储数据的单元的地址和长度。
注意:在后面加有
文档评论(0)