第3章 基本指令与简的单程序设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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[

文档评论(0)

ayangjiayu3 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档