- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 基本指令与简的单程序设计
第3章 基本指令与简单程序设计;学 习 目 标;汇编语言语句一般格式:
[标号:] 操作符 OPD [,OPS ] [;注释]
OPD [,OPS ]问题:
1. 操作数存放的地方?
2. 指令中操作数或操作数地址如何表示?即如何寻址?;3.1 寻址方式 ;3.1.1 立即寻址;1.立即寻址方式;3.1.2 寄存器寻址方式;寄存器寻址;3.1.3 内存型寻址方式
内存型寻址方式是指参与操作的数据在内存中,因此必须指明操作数究竟在内存的什么地方,即指出内存的逻辑地址。操作数逻辑地址如何表示
;有效地址的表示法;3 直接寻址;直接寻址方式;【例2.6】 ;4 寄存器间接寻址;默认段地址寄存器情况为:
当EA在BP中时 ,段地址寄存器为SS
当EA在BX、SI、DI之一寄存器中时 ,
段地址寄存器为DS。
物理地址PA计算方法如下:;寄存器间接寻址
例:MOV AX,[BX]
;执行指令:MOV AX ,[BP]
执行后:(AX)=?,(BP)=?,
(SS)=?,(20030H)=?
MOV [BX],AX
执行指令后,(AX)??;5 寄存器相对寻址;默认段地址寄存器情况为:P30
当EA在BP中时 ,段地址寄存器为SS
当EA在BX、SI、DI之一寄存器中时 ,
段地址寄存器为DS。
有效地址EA计算方法如下:;寄存器相对寻址
又称变址寻址。例:MOV AX,MASK[SI]
;【例2.3】 ;6 基址变址寻址;默认段地址寄存器情况为:
当基址寄存器是BP时 ,段地址寄存器为SS
当基址寄存器是BX时 ,段地址寄存器为DS。
有效地址EA计算方法如下:;基址加变址寻址
例: MOV AX, [BX][SI]
;7 相对基址变址寻址;
默认段地址寄存器情况为:P32
当基址寄存器是BP时 ,段地址寄存器为SS
当基址寄存器是BX时 ,段地址寄存器为DS。
有效地址EA计算方法如下:;相对基址加变址寻址
例:MOV AX,MASK[BX][SI]
;8 跨段问题;【例2.7】段超越前缀示例。 ;汇总; 【例3.1】设变量buf1和buf2定义在同一个段中,偏移地址分别是102H和3ACH,两个变量对应的缺省段寄存器都是ES,寄存器BX和BP的值分别是2000H和3000H,试计算下列各指令中源操作数的偏移地址值,并判断缺省段寄存器是哪一个。
(1)MOV AL,[buf1+BX]
(2)MOV AL,[BX+13]
(3)MOV AL,[BP+buf1-buf2]
(4)MOV AL,[buf2+BP-4000H]
;【解】
(1)偏移地址为
102H+2000H=2102H
段寄存器为buf1对应的缺省段寄存器ES。
(2)偏移地址为
2000H+13=200DH
段寄存器为BX对应的缺省段寄存器DS。
(3)偏移地址为
3000H+102H-3ACH=2D56H
段寄存器为BP对应的缺省段寄存器SS。
(4)偏移地址为
3ACH+3000H-4000H=0F3ACH
段寄存器为buf2对应的缺省段寄存器ES。; 【例3.2】设arr是一个整型数组变量,其中存放了10个字型带符号整数,用C语言写出相应的变量定义,编写程序段显示该数组的各元素值;并说明如果使用汇编语言的寄存器相对寻址方式[arr+BX],分别去取各元素,BX应如何变化。
【解】C的变量定义为
int arr[10]
程序段可写作:
for (i=0;i10;i++)
printf(“%d\n”,arr[i]);; 在汇编语言中,如果用[arr+BX]的形式分别访问各元素,则BX应分别取值为十进制的0、2、4、6、8、10、12、14、16、18,即每次加2,因为每个整数(字型带符号数)占2字节。
;现有(DS)=2000H,(BX)=0100H,(SI)=2,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,
试说明下列各条指令执行完后AX寄存器的内容。
(1)MOV AX,1200H
(2)MOV AX,BX
(3)MOV AX,[1200H]
(4)MOV AX,[BX]
(5)MOV AX,1100[BX]
(6)MOV AX,[BX][SI]
(7)MOV AX,1100[
您可能关注的文档
最近下载
- 七年级上册语文第一单元重点内容整合练习含答案及解析.pdf
- 植物界 一、植物界的主要类群.ppt VIP
- 【36页PPT】CQI23模塑系统评估.pptx VIP
- 全科医生转岗培训模拟练习题附答案6.doc
- 2022-LY-022林地保护利用规划林地落界技术规程.pdf VIP
- (高清版)W-S-T 403-2024 临床化学检验常用项目分析质量标准.pdf VIP
- YYT1437-2023 医疗器械 GBT42062应用指南.pdf VIP
- 2025年全国导游资格证考试《全导+地导》真题卷(含答案).pdf VIP
- CBT 3000-2019 船舶生产企业生产条件基本要求及评价方法.docx VIP
- 交通事故案例分析.ppt VIP
文档评论(0)