收藏 分享(赏)

《IBM-PC汇编语言》+全书课件(2课时).ppt

上传人:sjmd695 文档编号:5430662 上传时间:2019-03-02 格式:PPT 页数:406 大小:6.61MB
下载 相关 举报
《IBM-PC汇编语言》+全书课件(2课时).ppt_第1页
第1页 / 共406页
《IBM-PC汇编语言》+全书课件(2课时).ppt_第2页
第2页 / 共406页
《IBM-PC汇编语言》+全书课件(2课时).ppt_第3页
第3页 / 共406页
《IBM-PC汇编语言》+全书课件(2课时).ppt_第4页
第4页 / 共406页
《IBM-PC汇编语言》+全书课件(2课时).ppt_第5页
第5页 / 共406页
点击查看更多>>
资源描述

1、IBM-PC汇编语言程序设计,巢湖学院计算机系教材主编:沈美名 温冬蝉主讲教师:江家宝主讲手机:15256526478主讲Email: 欢迎在座各位常与我交流!,第01讲:基础知识 第02讲:8086计算机组织 第03讲:8086的寻址方式(上) 第04讲:8086的寻址方式(下) 第05讲:数据传送类指令 第06讲:算术指令 第07讲:逻辑指令和串处理指令(上) 第08讲:串处理指令(下)和控制转移指令(上) 第09讲:控制转移指令(下)和处理机控制与杂项操作指令 第10讲:伪操作与伪指令 第11讲:伪指令(下)汇编语言程序格式 第12讲:循环与分支程序设计方法,课件总目录(上),第13讲

2、、循环与分支程序设计实例分析 第14讲:子程序设计方法 第15讲:子程序设计实例分析 第16讲:高级汇编语言技术 第17讲:I/O设备的数据传送方式一和二 第18讲:I/O设备的数据传送方式三 第19讲:中断嵌套与中断程序实例分析 第20讲:键盘I/O和显示器I/O 第21讲:打印机I/O和串行通信口I/O 第22讲:显示方式和视频显示存储器(选学) 第23讲:期末总复习(上) 第24讲:期末总复习(下),课件总目录(下),IBMPC汇编语言 程序设计(第2版),清华大学计算机系列教材 沈美名 温冬蝉 编著,总目录,参考资料 1.80X86汇编语言程序设计沈美明 温冬婵 清华大学出版社 2.I

3、BM PC 汇编语言与程序设计 PETER ABEL 编著 第4版 清华大学出版社.PRENTICE HALL第5版 人民邮电出版社 3. IBM PC 汇编语言与程序设计例题习题集温冬婵 沈美明 清华大学出版社,总目录,第01讲:基础知识,FORTRAN BASIC COBOL PASCAL C/C+ JAVA .,总目录,后一讲,计算机语言的发展,第01讲:基础知识(2课时),面向机器的低级语言通常是为特定的计算机或计算机系列专门设计的。 保持了机器语言的优点具有直接和简捷的特点。 可有效地访问、控制计算机的各种硬件设备 如:磁盘、存储器、CPU、I/O端口等。 高效的程序设计语言目标代码

4、简短;占用内存少;执行速度快; 经常与高级语言配合使用应用十分广泛。,后一讲,汇编语言的特点,总目录,第01讲:基础知识(2课时),例1:编程实现 c =a+b,并在屏幕上显示出结果。 #include “stdafx.h“#include “stdio.h“int main(int argc, char* argv) int a,b,c;a=1; b=2;c=a+b;printf(“c=%dn“,c);return 0;,编译后的目标文件达到3.59KB,后一讲,汇编语言的特点举例1,总目录,第01讲:基础知识(2课时),例2.编程实现 c =a+b,并在屏幕上显示出结果。 data seg

5、ment a db ? b db ? c db ? string db c=$ data endscode segment main proc farassume cs:code, ds:data, es:data start:push dssub ax,axpush axmov ax,datamov ds,axmov es,ax,汇编后的目标文件 只有208字节,mov a,1mov b,2mov al,aadd al,bmov c,allea dx,stringmov ah,09int 21hadd c,30hmov dl,cmov ah,2int 21hmov dl,0ahint 21h

6、mov dl,0dhint 21hret main endp code endsend start,后一讲,汇编语言的特点举例2,总目录,第01讲:基础知识(2课时),系统程序、高效率代码、I/O驱动程序70%以上的系统软件是用汇编语言编写的。某些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。高级绘图程序、视频游戏程序一般是用汇编语言编写的。,后一讲,汇编语言的应用,总目录,第01讲:基础知识(2课时),目标: 了解汇编语言的特性及其编程技术。 建立起“机器”和“程序”、“空间”和“时间”的概念。建议: 充分注意“汇编”课实践性强的特点。 多读程序,多写程序,多上机调试程序。 熟

7、悉PC机的编程结构。 掌握汇编语言及其程序设计的基本概念、方法和技巧。,后一讲,总目录,教师建议,第01讲:基础知识(2课时), 数制 数制之间的转换 运算 数和字符的表示,后一讲,总目录,第1章、基础知识,第01讲:基础知识(2课时),存储容量 1K = 1024 = 210(Kilo) 1M = 1024K = 220(Mega) 1G = 1024M = 230(Giga)1个二进制位:1bit (比特) 8个二进制位:1Byte (字节)1Byte = 8bit 2个字节: 1Word (字) 1Word = 2Byte = 16bit,后一讲,总目录,预备知识,第01讲:基础知识(2

8、课时),(1) R进制数位权、基数、数码; 基数为R ,逢R进一,(2)八进制与二进制数码对应关系,(3)十六进制与二进制数码对应关系,1.1.1、数制,后一讲,总目录,1.1、进位计数制与不同基数的数之间的转换,第01讲:基础知识(2课时),(1)、任意进制R转化成十进制数Eg:1011100.10111B = 92.71875D (2)、十进制数转换成其它进制数整数部分 = 除R倒取余; 小数部分 = 乘R顺取整;Eg:125.63D = 二进制和八进制,后一讲,总目录,1.1.2、各数制之间的转换,第01讲:基础知识(2课时),二进制 十六进制十进制 二进制十进制 十六进制,降幂法 除法

9、,二进制是桥梁,后一讲,总目录,1.1.3、各数制之间的转换,第01讲:基础知识(2课时), 二进制 八进制011 101 111 110.011 100B 3 5 7 6 . 3 4 11101111110.0111B = 3576.34O6 1 . 4 2O . 110 001 100 010 61.42O = 110001.10001B,后一讲,总目录,第01讲:基础知识(2课时), 二进制 十六进制11 0101. 1011 111B0011 0101. 1011 1110B 3 5 B E 110101.10111110B = 35BEHA1 9 . CHA 1 9 . C 1010

10、 0001 1001.1100 A19.CH = 101000011001.11B,后一讲,总目录,第01讲:基础知识(2课时),1011B = 23+21+20=11D降幂法 除法例: 27D = ? B27 11 3 3 1- - - -2n 32 16 8 4 2 11 1 0 1 1 27D = 11011B, 二进制 十进制,后一讲,总目录,第01讲:基础知识(2课时), 十六进制 十进制BF3CH = 11163 +15162 +3161 +12160= 48956D降幂法 除法例:399D = ? H399 143 15 399/1624/161/16 0 - - - 16n 2

11、56 16 1 F 8 1 1 8 F 399D = 18FH,后一讲,总目录,第01讲:基础知识(2课时),1.2.1、二进制算术运算 逢二进一、借一为二,后一讲,总目录,1.2、运算(算术运算和逻辑运算),加法规则 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 (向高位进1),乘法规则 0 0 = 0 0 1 = 0 1 0 = 0 1 1 = 1,减法规则 0 - 0 = 0 0 - 1 = 1(向高位借1) 1 - 0 = 1 1 - 1 = 0,第01讲:基础知识(2课时),1.2.2、十六进制算术运算 逢十六进一、借一为十六,(1).加法规则:两个

12、一位数之和S0时同十进制减法,若S0时向高位借1,然后(a+16)-c; (3).乘法规则:用十进制乘法规则计算,结果用十六进制表示;,注意:若16进制数最高位为字母,记录时在前面补0 = OA34DH,382FH;,后一讲,总目录,第01讲:基础知识(2课时),后一讲,总目录,1.3、几种基本的逻辑运算(按位操作),第01讲:基础知识(2课时),例:X=00FFH Y=5555H,求Z=XY= ?X= 0000 0000 1111 1111 B Y= 0101 0101 0101 0101 BZ= 0101 0101 1010 1010 B Z=55AAH,后一讲,总目录,第01讲:基础知识

13、(2课时),1.4.1、计算机中有符号数的表示 机器数在机器中,把一个数连其符号在内数值化表示的数;,后一讲,总目录,1.4、计算机中数和字符的表示,第01讲:基础知识(2课时),1.4.2、数的常用表示法 原码 反码 补码原码表示法:符号 + 绝对值 例:n = 8bit+3原码 = 0 000,0011 = 03H- 3原码 = 1 000,0011 = 83H+0原码 = 0 000,0000 = 00H- 0原码 = 1 000,0000 = 80H 0 的表示不惟一反码表示法:正数的反码同原码,负数的反码数值位与原码相反 例:n = 8bit+5反码 = 0 000,0101 = 0

14、5H- 5反码 = 1 111,1010 = FAH+0反码 = 0 000,0000 = 00H- 0反码 = 1 111,1111 = FFH 0 的表示不惟一,后一讲,总目录,第01讲:基础知识(2课时),补码表示法: 正数的补码: 同原码 负数的补码:(1)写出与该负数相对应的正数的补码(2)按位求反(3)末位加一,后一讲,总目录,第01讲:基础知识(2课时),补码的符号扩展规则 = 高位不足者补符号位 eg:46补 = 00101110 = 2EH 扩展成8位= 0000000000101110 = 002EH 扩展成16位46补 = 11010010 = D2H 扩展成8位= 11

15、11111111010010 = FFD2H 扩展成16位,后一讲,总目录,例: 机器字长8位,- 46补码 = ?46补码 = 0 0 1 0 1 1 1 0 1 1 0 1 0 0 0 11 1 0 1 0 0 1 0 = D2H机器字长8位时,- 46补码 = D2H +0补码 = 0 0 0 0 0 0 0 01 1 1 1 1 1 1 10 0 0 0 0 0 0 0 = - 0补码 0 的表示惟一,按位求反,末位加1,按位求反,末位加1,第01讲:基础知识(2课时),N位二进制有符号数补码的表示范围:-2N-1X2N-1-1,N位二进制无符号数的表示范围:0X 2N -1,后一讲,

16、总目录,第01讲:基础知识(2课时),例:,后一讲,总目录,1.4.3、补码的加法和减法: 机器数用补码表示的目的是为了运算方便,先看下面的一个例子: X = +32D、Y = 96D 求(X+Y)的值和补码? 显然: X原 = 0010 0000 B X补 = 0010 0000 BY原 = 1110 0000 B Y补 = 1010 0000 B X原 + Y原 = 10000 0000 B 然而:X补 + Y 补 = 1100 0000 B结果显示:XY补 = X补Y补 求补运算 对一个二进制数按位求反、末位加一 加法规则:X+Y补码 = X补码 + Y补码 减法规则:X-Y补码 = X

17、补码 + -Y补码补码减法可转换为补码加法,第01讲:基础知识(2课时),后一讲,1.4.4、进位和溢出 进位: 由于运算结果超出了位数,最高有效位向前的进位,这一位自然丢失,一般不表示结果的对错。 溢出:表示结果超出了字长允许表示的范围,一般会造成结果出错。,总目录,第01讲:基础知识(2课时),后一讲,总目录,1.4.5、字符的表示 (1).机器中字符分类,(2).ASCII码:用一个字节来表示一个字符,低7位为字符的ASCII值,最高位一般用作校验位。,第01讲:基础知识(2课时),第01讲:作业布置Page14: 书面作业1.1(3)、 1.2(1)、 1.3(4)1.4(3)、 1.

18、5(6)、 1.6(1),后一讲,总目录,第01讲:基础知识(2课时), 计算机系统 存储器 中央处理机 外部设备,第02讲:8086计算机组织,前一讲,后一讲,总目录,第02讲:8086计算机组织(2课时),2.1.1、80x86微处理器的发展P表2.1(1968年美国Intel公司成立) 补充:1999年初 32位 Pentium芯片;注意各种芯片的位数;2002年后 32 /64位 Pentium芯片; 2.1.2、基本术语:晶体管数、主频、三总线(数据、地址、控制)、总线宽度、主存储器(内存)、 高速缓冲存储器、外部存储器; 2.1.3、基本常识: (1)、地址总线宽度与寻址空间:1个

19、字节(BYTE)1B=8bit 单字(WORDE)1W=2B=16bit 双字(DWORD) 1D=2W=4B=32bit 三字(FWORD)1F=3W=6B=48bit 四字(QWORD) 1Q=4W=8B=64bit 五字(TBYTE) 1T=5W=10B=80bit 地址线K根可寻址2k个存储单元;若按“字节”编址2k个字节(即2kB);若按“字”编址2k个字(即2k2B=2k+1B);若按“双字”编址2k个双字(即2k4B=2k+2B); Eg:32位地址总线、按字节编址、则寻址232B=22*230B=22GB=4GB; (2)、Chche容量:80386少许、804868KB Pe

20、ntium8KB指令cache、8KB数据cache;Petium Pro8KB指令cache、8KB数据cache、256KB二级cache;Pentium、更多;,总目录,前一讲,2.1、8086微处理器简介,第02讲:8086计算机组织(2课时),后一讲,硬件组成:,1.中央处理机 CPU,总线控制逻辑,接 口,接 口,2.存储器,大容量 存储器,I/O设备,3.I/O子系统,系统总线,. . .,. . .,软件:系统软件 用户软件,总目录,前一讲,2.2、基于微处理器的计算机系统组成,第02讲:8086计算机组织(2课时),后一讲,(1).系统软件厂家提供给用户的一组程序、为用户程序

21、服务; 主要有:操作系统、I/O驱动程序、文件管理程序、文本编辑程序、翻译程序(汇编程序、编译程序、解释程序);汇编语言 高级语言注意汇编语言与硬件有关、高级语言与硬件无关;(2).用户软件用户编写的程序及相关的文档;,软件组成:,总目录,前一讲,第02讲:8086计算机组织(2课时),后一讲,2.3.1、中央处理器CPU的组成 :运算器、控制器、寄存器组等 、运算器算术逻辑部件(ALU):算术运算、逻辑运算; 、控制器产生控制信号、控制所有部件; 、寄存器组暂存指令运行所需的信息:操作数、地址、中间结果、最终结果、预取指令等; 2.3.2、80x86寄存器组 1、寄存器组分类: 、程序可见寄

22、存器 通用寄存器 专用寄存器 段寄存器 、程序不可见寄存器用户不可操作、CPU专用;,总目录,前一讲,2.3、中央处理器(CPU),第02讲:8086计算机组织(2课时),后一讲,总目录,前一讲,80x86的寄存器结构,数据寄存器,指针寄存器,变址寄存器,控制寄存器,第02讲:8086计算机组织(2课时),后一讲,2、通用寄存器组简介(8个)分8位、16位、32位 (1).累加器(EAX、AX、AH、AL)除通用外、乘/除指令的操作数、算术运算结果和操作数、I/O与CPU传送信息; (2).基址变址寄存器(EBX、BX、BH、BL)除通用外、存放基址 (3).计数寄存器(ECX、CX、CH、C

23、L)除通用外、计数功能; (4).数据寄存器(EDX、DX、DH、DL)除通用外、与累加器组合成双字或四字长数(DX:AX,EDX:EAX)、存放I/O端口地址; (5).堆栈指针寄存器(ESP、SP)除通用外,存放堆栈指针; (6).基址指针寄存器(EBP、BP)除通用外、与SS联合确定”栈”中单元; (7).源变址寄存器(ESI、SI)除通用外、与DS联用确定数据段中单元; (8).目的变址寄存器(EDI、DI)除通用外、与DS联用确定数据段单元: 注意:变址寄存器(7)、(8)有自增自减功能。,总目录,前一讲,第02讲:8086计算机组织(2课时),后一讲,3、专用存储器简介(3个)16

24、位/32位 (1).指令指针寄存器(EIP/IP)存放即将运行的下一条指令偏移地址;它与段存储器CS联合确定代码段中指令的物理地址; (2).堆栈指针寄存器(ESP/SP)除通用外,存放堆栈指针; (3).标志寄存器(EFLAGS/FLAGS)又名“程序状态寄存器”,存放条件运行时 的“条件码标志、控制标志、系统标志”(状态字) 条件码标志(6个)程序运行结果和状态信息,可作为程序转移与处理控制的条件; 溢出标志OF溢出时为1(OV),不溢出时为0(NV); 符号标志SF标识结果正负,正为0(PL),负为1(NG); 零标志ZF结果是否为0,是为1(ZR),否为0(NZ); 半进位标志AF运算

25、时第3位是否发生进/借位,是为1(AC),否为0(NA); 奇偶标志PF结果中的1的个数是否为偶,是为1(PE),否为0(PO); 进位标志CF最高位是否发生进/借位,是为1(CY),否为0(NC); 控制标志(方向标记DF)DF=1则表明变址寄存器SI和DI递减;DF=0则表明变址寄存器SI和DI递增; 系统标志用于I/O、中断屏蔽、程序调试、任务切换等;主要有:TF陷阱标志;IF中断标志;IOPLI/O特权标志等;,总目录,前一讲,第02讲:8086计算机组织(2课时),后一讲,条件码标志 符号 标志名 值为1 值为0 OF 溢出标志 OV NV SF 符号标志 NG PL ZF 零标志

26、ZR NZCF 进位标志 CY NCAF 辅助进位标志 AC NAPF 奇偶标志 PE PO,例:ADD AX, BXJO / JC ERROR ?,总目录,前一讲,标志寄存器 ( FLAGS),控制标志 符号 标志名 值为1 值为0DF 方向标志 DN UPIF 中断标志 EI DITF 陷阱标志 没定义,第02讲:8086计算机组织(2课时),后一讲,4、段寄存器组(4个/6个)简介都是16位:代码段CS、数据段DS、堆栈段CS、附加段ES、附加数据段(FS和GS);,第02讲:8086计算机组织(2课时),总目录,前一讲,后一讲,2.4.1、存储单元的物理地址: Def:为了便于读写信息

27、,内存中按照字节编址即每个字节有一个唯一编号,该编号位该单元的物理地址; 注意:字节编址、二进制表示、十六进制书写;参见图(2.5),存储器以字节(8 bit)为编程单位 每个字节单元都有唯一的地址编码 地址用无符号整数来表示(编程用十六进制表示) 一个字要占用相继的两个字节 低位字节存入低地址,高位字节存入高地址 对字,双字,四字单元的地址一律以最低字节地址表示 机器以偶地址访问(读 / 写)存储器,第02讲:8086计算机组织(2课时),总目录,前一讲,2.4、存储器的存储单元地址和存储内容,后一讲,2.4.2、存储单元中的内容:,Def:逻辑地址段地址和偏移地址统称逻辑地址; 若:X单元

28、存放的内容是Y单元的地址,则Y单元的内容表示为:(Y)=(X)字节,字,双字,四字长内容在存储器中的存储形式低对低,高对高 字节内容(10000H)9FH; (10001H)26H 访问一次内存 字内容 (10000H)269FH;(10001H)4826H 访问两次内存 双字内容(10000H)8348 269FH;(10001H)5B83 4826H 访问四次内存,第02讲:8086计算机组织(2课时),总目录,前一讲,后一讲,2.4.3、实模式存储器寻址(寻址如何形成物理地址),(1)、def:实模式采用16位段地址和16位地址偏移形成20位物理地址;最大寻址空间1MB,最大分段为64K

29、B的存储器寻址方式?def:保护模式采用16位段地址和32位偏移地址形成32位物理地址;最大寻址空间为4GB,最大分段为4GB的存储器寻址方式; (2)、存储器地址分段: 20 根地址线: 地址范围 00000HFFFFFH (1MB)机器字长16位:仅能表示地址范围 0000HFFFFH(64KB) 解决的办法:将内存分成若干段,每段的开始字节物理地址的最低4位(16进制是最低位)全0,该字节的地址称之为(段基址),取其高16位作为段地址;取段内相对于段起始位置的偏移值(距离)作为偏移地址(有效地址:EA);显然:段地址和偏移地址的取值范围是064K范围内的任意值(?);提问:段地址和偏移地

30、址能否同时取FFFFH?,第02讲:8086计算机组织(2课时),总目录,前一讲,后一讲,实模式下最小段的划分(寻址空间1MB),第02讲:8086计算机组织(2课时),总目录,前一讲,后一讲,最小段的段地址的取值0000H、 0001H 、 0002H 、FFFFH;共64k个段 ; 最小段的偏移地址的取值 0000H、 0001H 、 0002H 、 000FH;共16个字节 ;,实模式下最大段的划分(寻址空间1MB),第02讲:8086计算机组织(2课时),总目录,前一讲,后一讲,最大段的段地址的取值范围 0000H、 1000H 、 2000H 、 F000H;共16个段 ; 最大段的

31、偏移地址的取值范围 0000H、 0001H 、 0002H 、FFFFH;共64k个字节 ;,(3)、实模式寻址方式:16d段基址 + 偏移地址(EA) = 物理地址(PA)16位 16位 20位 即:16位段基址左移4位后加16位偏移地址形成20位物理地址(硬件自动实现) 例:(DS) = 2100H, (EA)=(BP) = 0500H 则:(PA) = 21000H+0500H = 21500H (4)、段寄存器(16位)专门存放段基址的寄存器;、CS存放当前正在运行的程序段基址;、DS存放当前正在运行的程序所用到的数据段基址;、SS存放当前使用的堆栈段的栈底(高地址);、ES存放附加

32、的数据段基址; 注意:、每个段寄存器定义的段可以独占64KB,也可重叠(见图2.9);、段寄存器与其对应存放偏移地址的寄存器之间有默认关系(见表2.3与表2.4),第02讲:8086计算机组织(2课时),总目录,前一讲,后一讲,支持多任务处理功能 支持虚拟存储器特性,2.4.4、保护模式下存储器寻址16位选择器的值经过操作系统的地址转换操作变成32位的段地址,然后加上32位的偏移地址而形成了32位的物理地址;,保护模式下的存储器寻址,所选存储单元,描 述 符64,描述符表,所选段,存 储 器,段基地址32,选择器16,偏移地址 32,逻辑地址,第02讲:8086计算机组织(2课时),总目录,前

33、一讲,后一讲,2.4.5、寄存器与存储器的比较:,寄 存 器 存 储 器 在CPU内部 在CPU外部 访问速度快 访问速度慢 容量小,成本高 容量大,成本低 用名字表示 用地址表示 没有地址 地址可用各种方式形成,第02讲:8086计算机组织(2课时),总目录,前一讲,后一讲,1、外部接口组成:由一组“寄存器”及相关“控制电路组成”; 、数据寄存器存放主机与外设交换的数据;、状态寄存器存放外设和接口的当前状态信号;、命令寄存器存放CPU给外的控制命令; 2、Def:端口地址(又称“端口号” )外设寄存器的地址(即编号) 、编址方式独立编址、混合编址; 、80x86I/O地址空间为64KB(即6

34、5536个B)外设中每个寄存器有一个端口(Port)地址,构成一个独立于内存的 I/O 地址空间:0000HFFFFH3、外设的例行程序通过中断方式转入的子程序,它完成一定的I/O功能;分两种:BIOS和DOS;,第02讲:8086计算机组织(2课时),总目录,前一讲,2.5、外部设备,后一讲,第02讲 作业布置 Page33:书面作业 习题2.2、习题2.3、习题2.4、习题2.5、习题2.8;,后一讲,第02讲:8086计算机组织(2课时),总目录,前一讲,第03讲:8086寻址方式(上),教学要求: 1.掌握一般指令系统的基本概念:指令格式、功能和注意事项。 2.重点掌握8086/808

35、8指令系统中,各指令的格式、寻址方式、指令类型 。 3.了解其他(奔腾等)的寻址方式和指令类型。,第03讲:8086寻址方式(上)(2课时),前一讲,第3章、80x86指令系统和寻址方式,总目录,后一讲,3.1、指令系统的基本概念,计算机的指令系统就是指该计算机能够执行的全部指令的集合。 每种计算机都有它支持的指令集合。 16位8086指令系统是整个Intel 80x86 系列微处理器指令系统的基础。,3.1.1、指令系统,前一讲,总目录,第03讲:8086寻址方式(上)(2课时),后一讲,操作码说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分。,指令由操

36、作码和操作数两部分组成。,操作数是指令执行的参与者,即各种操作的对象。有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有三个甚至四个操作数,通常称为一地址指令、二地址指令、三,前一讲,总目录,3.1.2 指令格式,第03讲:8086寻址方式(上)(2课时),后一讲,指令的功能该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式。 指令支持的寻址方式该指令中的操作数可以采用何种寻址方式。 指令对标志的影响该指令执行后是否对各个标志位(OV、ZF、CF、PF等)有影响,以及如何影响。,前一讲,总目录,3.1.3 学习指令的注意事项,第03讲:8086寻址方式(

37、上)(2课时),后一讲,3.2.1 寻址、寻址方式的概念寻址就是寻找操作数的地址。寻址方式就是寻找操作数的方法。操作数可以跟随在指令操作码之后,称为立即数. 操作数也可以存放在CPU内部的寄存器中,称为寄存器操作数. 绝大多数的操作数存放在内存储器中,称为存储器操作数.指令指定操作数的位置,即给出地址信息,在执行时需要根据这个地址信息找到需要的操作数.,前一讲,总目录,3.2、80x86寻址方式,第03讲:8086寻址方式(上)(2课时),后一讲,指令助记符体现该指令的功能,它对应一条二进制编码的机器指令。指令的操作数个数由该指令确定,可以没有操作数,也可以有一个、二个或三个操作数。 80X8

38、6寻址方式分类:寻址的中心问题如何确定“偏移地址”的值;第一类:与数据有关的十种方式立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址、比例变址寻址、基址比例变址寻址、相对基址比例变址寻址;第二类:与转移地址有关的四种寻址方式段内直接寻址、段内间接寻址、段间直接寻址、段间间接寻址; 说明:同一指令的多个操作数可各自采用不同的寻址方式。,3.2.2 80X86的指令格式 指令助记符 操作数1,操作数2,操作数3 ;注释,前一讲,总目录,第03讲:8086寻址方式(上)(2课时),后一讲,3.2.3 与数据有关的寻址方式 与寻址方式有关的基础知识简介:

39、(1)、有效地址(EA)指令直接或间接指明的存放操作数的内存单元的偏移地址: EA = 基址+(变址*比例因子)+位移量 注意:上述公式中四种成分的不同组合形成八种寻址方式 基址(base)存放在“基址寄存器”中;可正可负;主要用于存放数组或字符串首址;16位基址寄存器:BX、BP.32位基址寄存器:EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI. 变址(index)存放在“变址寄存器”中;可正可负;主要用于访问数组中某元素或字符串中某一元素.16位变址寄存器:SI、DI.32位变址寄存器:除ESP以外的七个32位通用寄存器. 比例因子(scale factor)只与变址寄存器

40、联用;只能为1、2、4或8; 注意:只能是32位寻址,没有16位寻址; 位移量(displacement)存放在指令中的一个8位、16位、32位地址偏移部分;可正可负;,前一讲,总目录,第03讲:8086寻址方式(上)(2课时),后一讲,(2)、段超越前缀形成物理地址时,段寄存器与访存类型之间有默认匹配关系,但有时可以使用段超越前缀来改变默认关系(参见P39表3.2); 格式:MOV AX,ES:2000H 特别注意:但以下三种情况不允许使用段超越前缀串处理指令的目的串ES段;取指指令CS段;PUSH的目的和POP的源SS段;,前一讲,总目录,第03讲:8086寻址方式(上)(2课时),后一讲

41、,以 MOV 指令为例:.立即寻址 MOV AX , 3069H.寄存器寻址 MOV AL , BH 操作数在内存中,必须访存的八种寻址方式如下:.直接寻址 MOV AX , 2000H.寄存器间接寻址 MOV AX , BX .寄存器相对寻址 MOV AX , COUNTSI .基址变址寻址 MOV AX , BPDI.相对基址变址寻址 MOV AX , MASKBXSI.相对比例变址寻址 MOV EAX,MASKESI*4 .基址比例变址寻址 MOV EBX,EAXEDX*8.相对基址比例变址寻址 MOV EAX,TABLEEBPEDI*4,前一讲,总目录,第03讲:8086寻址方式(上)

42、(2课时),后一讲,1)立即寻址方式没有EA,图形表示:,定义:操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。,汇编格式:n(n为立即操作数,是用8位或16位二进制补码表示的有符号数) 实列:MOV AH,5 MOV AH, 05HMOV AX,3064H MOV EAX,12345678H,功能:操作数存放在存储器,指令下一单元的内容为立即操 作数n。,前一讲,总目录,第03讲:8086寻址方式(上)(2课时),后一讲,【例3.1】 MOV AX, 4576H 执行后(AX)=?,该例中源操作数为立即寻址方式,立即数为4576H,存放在指令

43、的下一单元。,执行:4576HAX,执行后:(AX)=4576H,前一讲,总目录,第03讲:8086寻址方式(上)(2课时),后一讲,2)寄存器寻址方式没有EA,定义:指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助记符)的寻址方式称为寄存器寻址方式。,汇编格式:R (其中R表示寄存器名,如AX、BX等。) 实例: MOV AX, BX,功能:操作数直接存放在寄存器R中。,图形表示:,前一讲,总目录,第03讲:8086寻址方式(上)(2课时),后一讲,指令中可以引用的寄存器及其符号名称如下: 8位寄存器:AH、AL、BH、BL、CH、CL

44、、DH、DL; 16位寄存器:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等; 32位寄存器:EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP。,注意:由于指令所需的操作数已存储在寄存器中,或操作的结果存入寄存器,这样,在指令执行过程中,会减少读/写存储器单元的次数,所以,使用寄存器寻址方式的指令具有较快的执行速度。通常情况下,提倡在编写汇编语言程序时,应尽可能地使用寄存器寻址方式,但也不要把它绝对化。,前一讲,总目录,第03讲:8086寻址方式(上)(2课时),后一讲,【例3.2】下列程序执行后,(AX)=?,(BX)=?MOV AX,1234HMOV BX,567

45、8HADD AX,BX,执行: AX1234H,执行: BX5678H,执行: AX(AX)+(BX),执行后:(AX)=68ACH,(BX)=5678H,前一讲,总目录,第03讲:8086寻址方式(上)(2课时),后一讲,3)直接寻址方式EA=位移量,定义:指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。,汇编格式:含有变量的地址表达式。,功能:指令下一字单元的内容是操作数的偏移地址EA。,图形表示:,前一讲,总目录,第03讲:8086寻址方式(上)(2课时),后一讲,【例3.3】 执行指令:MOV BX ,1234H设(DS)=2000H。 执

46、行后:(BX)=?,34H,12H,执行:BX(21234H),执行后:(BX)= 5213H,前一讲,总目录,13,52,BX,第03讲:8086寻址方式(上)(2课时),后一讲,在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。 例如:MOV ES:1000H, AX,前一讲,总目录,第03讲:8086寻址方式(上)(2课时),后一讲,注意:立即寻址方式和直接寻址方式的书写格式不同,直接寻址的地址要写在括号“”,“”内。在程序中,直接地址通常用内存变量名来表示,如:MOV BX, VARW,其中,VARW是内存字变量; 试比较下列指令中源操作数的寻址方式(VARW是内存字变量):,前一讲,总目录,第03讲:8086寻址方式(上)(2课时),后一讲,4)寄存器间接寻址方式EA=基址/变址,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 职业教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报