汇编c2_讲义

上传人:wt****50 文档编号:46463737 上传时间:2018-06-26 格式:PDF 页数:59 大小:489.71KB
返回 下载 相关 举报
汇编c2_讲义_第1页
第1页 / 共59页
汇编c2_讲义_第2页
第2页 / 共59页
汇编c2_讲义_第3页
第3页 / 共59页
汇编c2_讲义_第4页
第4页 / 共59页
汇编c2_讲义_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《汇编c2_讲义》由会员分享,可在线阅读,更多相关《汇编c2_讲义(59页珍藏版)》请在金锄头文库上搜索。

1、80X86汇编语言程序设计80X86 Assembly Language Programming80X86 Assembly Language Programming许 向 阳 xuxy 许 向 阳 xuxy 华中科技大学计算机科学与技术学院华中科技大学计算机科学与技术学院国家精品课程国家精品课程第二章寻址方式第二章寻址方式?茫茫内存,何处觅操作数?茫茫内存,何处觅操作数??CPU如何知道操作数的地址?如何知道操作数的地址?问题问题?日常生活中,有哪些给出地址的方式?日常生活中,有哪些给出地址的方式?? C程序中,有哪些给出地址的方式?程序中,有哪些给出地址的方式?int i, j; int

2、A10; int *p; int B2010;Ai =5; Bij =10;结构变量、结构数组变量;结构变量、结构数组变量第二章寻址方式第二章寻址方式一、本章的学习内容一、本章的学习内容寄存器寻址寄存器间接寻址变址寻址基址加变址寻址立即寻址直接寻址寄存器寻址寄存器间接寻址变址寻址基址加变址寻址立即寻址直接寻址二、本章的学习重点二、本章的学习重点1、6种寻址方式的使用格式及语法规定;种寻址方式的使用格式及语法规定;2、6种寻址方式地址表示的含义及应用。种寻址方式地址表示的含义及应用。第二章寻址方式第二章寻址方式三、本章学习的难点三、本章学习的难点 直接寻址,寄存器间接寻址,变址寻址和基址加变址寻

3、址的使用格式及功能。直接寻址,寄存器间接寻址,变址寻址和基址加变址寻址的使用格式及功能。 四、学习方法四、学习方法 相互比较(共性相互比较(共性/差异)、与差异)、与C语言对应,多用语言对应,多用第二章寻址方式第二章寻址方式对一条指令,关注的焦点有哪些?对一条指令,关注的焦点有哪些?寻找操作数存放地址的方式称为寻找操作数存放地址的方式称为寻址方式寻址方式。? 操作数在哪里?操作数在哪里??操作数的类型操作数的类型字节字节/字字/双字?操作数的存放双字?操作数的存放地址地址操作数在主存时:关注操作数在主存时:关注段址段址/段选择符、段内偏移段选择符、段内偏移CPU内的内的寄存器寄存器主存主存I/

4、O设备端口设备端口? 执行什么操作?执行什么操作?ADD AX , BX 目的操作数地址目的操作数地址源操作数地址源操作数地址(OPD) + (OPS) ? OPD (AX) + (BX) ?AX双操作数的指令格式Question双操作数的指令格式Question:操作结束后,运算结果保存在哪? 源操作数是否变化?:操作结束后,运算结果保存在哪? 源操作数是否变化?第二章寻址方式第二章寻址方式操作符操作符OPD, OPS2.1 寄存器寻址寄存器寻址例例1:DEC BL4 3 HBL4 2 HBL执行前 :执行前 :(BL)=43H 执行:执行: (BL) 1 = 43 H 1 = 42H ?

5、BL 执行后:执行后:(BL)=42HQuestionQuestion:操作数在哪?操作数类型是什么?:操作数在哪?操作数类型是什么?使用格式使用格式: R: R 功能功能:寄存器R中的内容即为操作数。 说明:除个别指令外,R可为任意寄存器。:寄存器R中的内容即为操作数。 说明:除个别指令外,R可为任意寄存器。例例2:ADD AX , BX执行前 :执行前 :(AX)=1234H, (BX)=5620H 执行:执行:(AX)+(BX) = 6854H ? AX 结果:结果:(AX)=6854H , (BX)=5620H1234H 5620HAX BX6854H 5620HAX BX2.1 寄存

6、器寻址寄存器寻址例例3:MOV AX,BX例例4:ADD EAX , EDX执行前 :执行前 :(EAX)=12345678H, (EDX)=0A004321H 执行:执行:(EAX)+(EDX) = 1C349999H ? EAX 执行后:执行后:(EAX)=1C349999H (EDX)=0A004321H2.1 寄存器寻址寄存器寻址QuestionQuestion: 指令指令 MOV AX, BH 正确吗?为什么?如何实现正确吗?为什么?如何实现 (AX)+(BX)- CX ?2.2 寄存器间接寻址寄存器间接寻址格式格式:R 功能功能:操作数在内存中,操作数的偏移地址在寄存器R中。即(R

7、)为操作数的偏移地址.:操作数在内存中,操作数的偏移地址在寄存器R中。即(R)为操作数的偏移地址.操作码操作码EA R R 段选择符段选择符段寄存器段寄存器CPUCPU依据工作方式进行段/页转换,计算依据工作方式进行段/页转换,计算PAPA操作数操作数PA寄存器间接寻址方式的寻址过程例如:寄存器间接寻址方式的寻址过程例如:MOV AX, SI? R 可以是: 8个32位通用寄存器中的任意一个 EAX, EBX, ECX, EDX,ESI,EDI,ESP,EBP 4个16位通用寄存器中的一个R 可以是: 8个32位通用寄存器中的任意一个 EAX, EBX, ECX, EDX,ESI,EDI,ES

8、P,EBP 4个16位通用寄存器中的一个 BX,SI,DI,BPBX,SI,DI,BP2.2 寄存器间接寻址寄存器间接寻址? 操作数的类型:操作数的类型:未知未知R为R为BP、EBP、ESPBP、EBP、ESP,系统默认操作数在堆栈中, 等同于,系统默认操作数在堆栈中, 等同于SS:R;SS:R; 其它情况下,默认操作数在DS所指示的段中其它情况下,默认操作数在DS所指示的段中?操作数的操作数的偏移地址偏移地址在指令指明的寄存器中在指令指明的寄存器中 ?操作数所在的段是?操作数所在的段是?0020H0021H001FH0022H例例1:MOV AX, SI 执行前执行前 (AX)=0005H

9、(SI) =0020H DS:(20H)=1234H执行后执行后 (AX)= (SI) =2.2 寄存器间接寻址寄存器间接寻址偏移地址0000H56H78HDS问:问:MOV CL, SI (CL) = ?操作数的类型是如何确定的,你猜出来了吗?操作数的类型是如何确定的,你猜出来了吗?34H 12H1234H 0020H0020HSI例例2:MOV AH, BP 执行前执行前 (AX)=0005H (BP) =21H SS:(BP)=12H执行后执行后 (AX)=1205H (BP) =21H2.2 寄存器间接寻址寄存器间接寻址78H 56H 34H 12H 45H偏移地址0000H0020H

10、0021H001FH0022HSP001EHBPSS例例3:分析在执行如下程序段后,:分析在执行如下程序段后, (EAX)=? (EBX)=?MOV EAX, -1 MOV ESP, EAX POP EBX2.2 寄存器间接寻址寄存器间接寻址MOV AX, CXMOV AX, CX比较: MOV AX,BX MOV AX, BX比较: MOV AX,BX MOV AX, BX2.2 寄存器间接寻址寄存器间接寻址例:设例:设BUF DB 10,20,30,40,50 即以即以BUF为首址的字节区中存放有为首址的字节区中存放有5个数据,求它们的和。个数据,求它们的和。2.2 寄存器间接寻址寄存器间

11、接寻址0005H0009H0008H0007H0AH14H1EH28H32H0006Hc2_034j1.asm c2_034j2.asm算法分析:算法分析:共同特点:单元中的内容无规律, 但单元之间的地址有规律。共同特点:单元中的内容无规律, 但单元之间的地址有规律。BUFBX 0005(BX)和? 循环次数? 数据位置?和? 循环次数? 数据位置?2.2 寄存器间接寻址寄存器间接寻址MOV CX , 0 ; 计数计数 MOV AH , 0 ; 和和 MOV BX , OFFSET BUF LP: CMP CX,5 JGE EXIT ADD AH, BX INC BX INC CX JMP L

12、P .386 SEG1 SEGMENT USE16 STACK DB 200 DUP(0) SEG1 ENDSSEG2 SEGMENT USE16 BUF DB 10,20,30,40,50 RES DB ? SEG2 ENDSSEG3 SEGMENT USE16 ASSUME CS:SEG3, DS:SEG2,SS:SEG1 START: MOV AX , SEG2 MOV DS , AXQuestion: ADD AH, BX 可否换成可否换成ADD AH, BXEXIT: MOV RES,AH MOV AX , 4C00H INT 21H SEG3 ENDS END START2.2 寄

13、存器间接寻址寄存器间接寻址intbuf5=10,20,25,37,50 ; inti; int*p; intresult=0; p=buf; for (i=0;i5;i+) result+=*p; p=p+1; intbuf5=10,20,25,37,50 ; inti; int*p; intresult=0; p=buf; for (i=0;i5;i+) result+=*p; p=p+1; buf10 20 25 37 500004H0004Hp0008H000CHP与与BX对应:对应:ADD EAX, BX ADD BX, 4 2.3 变址寻址变址寻址格式格式: RF+V 或或 RF +

14、V 或或VRF 功能功能:R中的内容F + V 为操作数的偏移地址。:R中的内容F + V 为操作数的偏移地址。操作码操作码变址值变址值R R段选择符段选择符段寄存器段寄存器CPU依据工作方式进行段/页转换,计算PACPU依据工作方式进行段/页转换,计算PA操作数操作数PAEAF V*例如:MOV AL, 例如:MOV AL, EBX*2+5EBX*2+5?R 可以是: 8个32位通用寄存器中的任意一个 EAX, EBX, ECX, EDX,ESI,EDI,ESP,EBP 4个16位通用寄存器中的一个 BX,SI,DI,BPR 可以是: 8个32位通用寄存器中的任意一个 EAX, EBX, E

15、CX, EDX,ESI,EDI,ESP,EBP 4个16位通用寄存器中的一个 BX,SI,DI,BP2.3 变址寻址变址寻址?当R是16位寄存器时,F 只能为1当R是16位寄存器时,F 只能为1?F 可为 1,2,4,8格式:RF+V 或RF+V,F 可为 1,2,4,8格式:RF+V 或RF+V,VRF2.3 变址寻址变址寻址? 当R是16位寄存器时,V不超过16位;当R是16位寄存器时,V不超过16位; ? 当R是32位寄存器时,V不超过32位; v是二进制补码表示的有符号数格式:RF+V 或RF+V当R是32位寄存器时,V不超过32位; v是二进制补码表示的有符号数格式:RF+V 或RF+V?V 可为数值常量,也可以为一个变量。V 可为数值常量,也可以为一个变量。?当V 为变量时,取该变量对应单元的有效地址 参与运算。例:MOV AL, BUFEBX*2当V 为变量时,取该变量对应单元的有效地址 参与运算。例:MOV AL, BUFEBX*2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号