




已阅读5页,还剩375页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
IBM-PC汇编语言程序设计,巢湖学院计算机系 教材主编:沈美名 温冬蝉 主讲教师:江家宝 主讲手机主讲Email: 欢迎在座各位常与我交流!,教学日历: 第01讲(第01周):基础知识 第02讲(第02周):8086计算机组织 第03讲(第03周):8086的寻址方式 第04讲(第04周):数据传送类指令 第05讲(第05周):算术指令、逻辑指令和串处理指令 第06讲(第06周):控制转移指令和处理机控制与杂项操作指令 第07讲(第07周):汇编语言程序格式 第08讲(第08周):循环与分支程序设计方法 第09讲(第09周):循环与分支程序设计实例分析 第10讲(第10周):子程序设计方法 第11讲(第11周):子程序设计实例分析 第12讲(第12周):高级汇编技术 第13讲(第13周):I/O设备的数据传送方式一 第14讲(第14周):I/O设备的数据传送方式二 第15讲(第15周):键盘I/O和显示器I/O,课件总目录,IBMPC汇编语言 程序设计(第2版),清华大学计算机系列教材 沈美名 温冬蝉 编著,总目录,参考资料 1.80X86汇编语言程序设计 沈美明 温冬婵 清华大学出版社 2.IBM PC 汇编语言与程序设计 PETER ABEL 编著 第4版 清华大学出版社.PRENTICE HALL 第5版 人民邮电出版社 3. IBM PC 汇编语言与程序设计例题习题集 温冬婵 沈美明 清华大学出版社,总目录,第01讲:基础知识,FORTRAN BASIC COBOL PASCAL C/C+ JAVA .,第01讲(第01周):基础知识,总目录,后一讲,计算机语言的发展,面向机器的低级语言通常是为特定的计算机或计算机系列专门设计的。 保持了机器语言的优点具有直接和简捷的特点。 可有效地访问、控制计算机的各种硬件设备 如:磁盘、存储器、CPU、I/O端口等。 高效的程序设计语言目标代码简短; 占用内存少; 执行速度快; 经常与高级语言配合使用应用十分广泛。,第01讲(第01周):基础知识,后一讲,汇编语言的特点,总目录,例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,第01讲(第01周):基础知识(3课时),后一讲,汇编语言的特点举例1,总目录,例2.编程实现 c =a+b,并在屏幕上显示出结果。 data segment a db ? b db ? c db ? string db c=$ data ends code segment main proc far assume cs:code, ds:data, es:data start: push ds sub ax,ax push ax mov ax,data mov ds,ax mov es,ax,汇编后的目标文件 只有208字节,第01讲(第01周):基础知识(3课时),mov a,1 mov b,2 mov al,a add al,b mov c,al lea dx,string mov ah,09 int 21h add c,30h mov dl,c mov ah,2 int 21h mov dl,0ah int 21h mov dl,0dh int 21h ret main endp code ends end start,后一讲,汇编语言的特点举例2,总目录,系统程序、高效率代码、I/O驱动程序 70%以上的系统软件是用汇编语言编写的。 某些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。 高级绘图程序、视频游戏程序一般是用汇编语言编写的。,后一讲,第01讲(第01周):基础知识(3课时),汇编语言的应用,总目录,目标: 了解汇编语言的特性及其编程技术。 建立起“机器”和“程序”、“空间”和“时间”的概念。 建议: 充分注意“汇编”课实践性强的特点。 多读程序,多写程序,多上机调试程序。 熟悉PC机的编程结构。 掌握汇编语言及其程序设计的基本概念、方法和技巧。,后一讲,第01讲(第01周):基础知识(3课时),总目录,教师建议, 数制 数制之间的转换 运算 数和字符的表示,后一讲,第01讲(第01周):基础知识(3课时),总目录,第1章、基础知识,存储容量 1K = 1024 = 210(Kilo) 1M = 1024K = 220(Mega) 1G = 1024M = 230(Giga) 1个二进制位:1bit (比特) 8个二进制位:1Byte (字节) 1Byte = 8bit 2个字节: 1Word (字) 1Word = 2Byte = 16bit,后一讲,第01讲(第01周):基础知识(3课时),总目录,预备知识,(1) R进制数位权、基数、数码; 基数为R ,逢R进一,(2)八进制与二进制数码对应关系,(3)十六进制与二进制数码对应关系,1.1.1、数制,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.1、进位计数制与不同基数的数之间的转换,(1)、任意进制R转化成十进制数 Eg:1011100.10111B = 92.71875D (2)、十进制数转换成其它进制数 整数部分 = 除R倒取余; 小数部分 = 乘R顺取整; Eg:125.63D = 二进制和八进制,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.1.2、各数制之间的转换,二进制 十六进制 十进制 二进制 十进制 十六进制,降幂法 除法,二进制是桥梁,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.1.3、各数制之间的转换, 二进制 八进制 011 101 111 110.011 100B 3 5 7 6 . 3 4 11101111110.0111B = 3576.34O 6 1 . 4 2O . 110 001 100 010 61.42O = 110001.10001B,后一讲,第01讲(第01周):基础知识(3课时),总目录, 二进制 十六进制 11 0101. 1011 111B 0011 0101. 1011 1110B 3 5 B E 110101.10111110B = 35BEH A1 9 . CH A 1 9 . C 1010 0001 1001.1100 A19.CH = 101000011001.11B,后一讲,第01讲(第01周):基础知识(3课时),总目录,1011B = 23+21+20=11D 降幂法 除法 例: 27D = ? B 27 11 3 3 1 - - - - 2n 32 16 8 4 2 1 1 1 0 1 1 27D = 11011B, 二进制 十进制,后一讲,第01讲(第01周):基础知识(3课时),总目录, 十六进制 十进制 BF3CH = 11163 +15162 +3161 +12160 = 48956D 降幂法 除法 例:399D = ? H 399 143 15 399/1624/161/16 0 - - - 16n 256 16 1 F 8 1 1 8 F 399D = 18FH,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.2.1、二进制算术运算 逢二进一、借一为二,后一讲,第01讲(第01周):基础知识(3课时),总目录,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,1.2.2、十六进制算术运算 逢十六进一、借一为十六,(1).加法规则:两个一位数之和S0时同十进制减法,若S0时向高位借1,然后(a+16)-c; (3).乘法规则:用十进制乘法规则计算,结果用十六进制表示;,注意:若16进制数最高位为字母,记录时在前面补0 = OA34DH,382FH;,后一讲,第01讲(第01周):基础知识(3课时),总目录,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.3、几种基本的逻辑运算(按位操作),例:X=00FFH Y=5555H,求Z=XY= ? X= 0000 0000 1111 1111 B Y= 0101 0101 0101 0101 B Z= 0101 0101 1010 1010 B Z=55AAH,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.4.1、计算机中有符号数的表示 机器数在机器中,把一个数连其符号在内数值化表示的数;,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.4、计算机中数和字符的表示,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 = 05H - 5反码 = 1 111,1010 = FAH +0反码 = 0 000,0000 = 00H - 0反码 = 1 111,1111 = FFH 0 的表示不惟一,后一讲,第01讲(第01周):基础知识(3课时),总目录,补码表示法: 正数的补码: 同原码 负数的补码:(1)写出与该负数相对应的正数的补码 (2)按位求反 (3)末位加一,后一讲,第01讲(第01周):基础知识(3课时),总目录,补码的符号扩展规则 = 高位不足者补符号位 eg:46补 = 00101110 = 2EH 扩展成8位 = 0000000000101110 = 002EH 扩展成16位 46补 = 11010010 = D2H 扩展成8位 = 1111111111010010 = FFD2H 扩展成16位,后一讲,第01讲(第01周):基础知识(3课时),总目录,例: 机器字长8位,- 46补码 = ? 46补码 = 0 0 1 0 1 1 1 0 1 1 0 1 0 0 0 1 1 1 0 1 0 0 1 0 = D2H 机器字长8位时,- 46补码 = D2H +0补码 = 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 = - 0补码 0 的表示惟一,按位求反,末位加1,按位求反,末位加1,N位二进制有符号数补码的表示范围:-2N-1X2N-1-1,N位二进制无符号数的表示范围:0X 2N -1,后一讲,第01讲(第01周):基础知识(3课时),总目录,例:,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.4.3、补码的加法和减法: 机器数用补码表示的目的是为了运算方便,先看下面的一个例子: X = +32D、Y = 96D 求(X+Y)的值和补码? 显然: X原 = 0010 0000 B X补 = 0010 0000 B Y原 = 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补码 + -Y补码 补码减法可转换为补码加法,后一讲,第01讲(第01周):基础知识(3课时),1.4.4、进位和溢出 进位: 由于运算结果超出了位数,最高有效位向前的进位, 这一位自然丢失,一般不表示结果的对错。 溢出:表示结果超出了字长允许表示的范围, 一般会造成结果出错。,总目录,后一讲,第01讲(第01周):基础知识(3课时),总目录,1.4.5、字符的表示 (1).机器中字符分类,(2).ASCII码:用一个字节来表示一个字符, 低7位为字符的ASCII值, 最高位一般用作校验位。,第01讲:作业布置 Page14: 书面作业1.1(3)、 1.2(1)、 1.3(4) 1.4(3)、 1.5(6)、 1.6(1),后一讲,第01讲(第01周):基础知识(3课时),总目录, 计算机系统 存储器 中央处理机 外部设备,第02讲(第02周):8086计算机组织(3课时),第02讲:8086计算机组织,前一讲,后一讲,总目录,2.1.1、80x86微处理器的发展P表2.1(1968年美国Intel公司成立) 补充:1999年初 32位 Pentium芯片;注意各种芯片的位数; 2002年后 32 /64位 Pentium芯片; 2.1.2、基本术语: 晶体管数、主频、三总线(数据、地址、控制)、总线宽度、主存储器(内存)、 高速缓冲存储器、外部存储器; 2.1.3、基本常识: (1)、地址总线宽度与寻址空间: 8位二进制数1个字节B;2个字节1个字W;2个字双字D; 地址线K根可寻址2个存储单元; 若按“字节”编址2个字节(即2B); 若按“字”编址2个字(即22B=2B); 若按“双字”编址2个双字(即24B=2B); Eg:32位地址总线、按字节编址、则寻址2B=2KB=2MB=2GB=4GB; (2)、Chche容量: 80386少许、804868KB Pentium8KB指令cache、8KB数据cache; Petium Pro8KB指令cache、8KB数据cache、356KB二级cache; Pentium、更多;,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.1、8086微处理器简介,硬件组成:,1.中央处理机 CPU,总线控制 逻辑,接 口,接 口,2.存储器,大容量 存储器,I/O设备,3.I/O子系统,系统总线,. . .,. . .,软件:系统软件 用户软件,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.2、基于微处理器的计算机系统组成,(1).系统软件厂家提供给用户的一组程序、为用户程序服务; 主要有:操作系统、I/O驱动程序、文件管理程序、文本编辑程序、 翻译程序(汇编程序、编译程序、解释程序); 汇编语言 高级语言 注意汇编语言与硬件有关、高级语言与硬件无关; (2).用户软件用户编写的程序及相关的文档;,软件组成:,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.3.1、中央处理器CPU的组成 :运算器、控制器、寄存器组等 、运算器算术逻辑部件(ALU):算术运算、逻辑运算; 、控制器产生控制信号、控制所有部件; 、寄存器组暂存指令运行所需的信息:操作数、地址、 中间结果、最终结果、预取指令等; 2.3.2、80x86寄存器组 1、寄存器组分类: 、程序可见寄存器 “通用寄存器”、 “专用寄存器”、 “段寄存器” 、程序不可见寄存器用户不可操作、CPU专用;,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.3、中央处理器(CPU),后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,80x86的寄存器结构,数据寄存器,指针寄存器,变址寄存器,控制寄存器,2、通用寄存器组简介(8个)分8位、16位、32位 (1).累加器(EAX、AX、AH、AL)除通用外、乘/除指令的操作数、算术运算结果和操作数、I/O与CPU传送信息; (2).基址变址寄存器(EBX、BX、BH、BL)除通用外、存放基址 (3).计数寄存器(ECX、CX、CH、CL)除通用外、计数功能; (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讲(第02周):8086计算机组织(3课时),总目录,前一讲,3、专用存储器简介(3个)16位/32位 (1).指令指针寄存器(EIP/IP)存放即将运行的下一条指令偏移地址;它与段存储器CS联合确定代码段中指令的物理地址; (2).堆栈指针寄存器(ESP/SP)除通用外,存放堆栈指针; (3).标志寄存器(EFLAGS/FLAGS)又名“程序状态寄存器”,存放条件运行时 的“条件码标志、控制标志、系统标志”(状态字) 条件码标志(6个)程序运行结果和状态信息,可作为程序转移与处理控制的条件; 溢出标志OF溢出时为1(OV),不溢出时为0(NV); 符号标志SF标识结果正负,正为0(PL),负为1(NZ); 零标志ZF结果是否为0,是为1(ZR),否为0(NZ); 半进位标志AF运算时第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讲(第02周):8086计算机组织(3课时),总目录,前一讲,条件码标志 符号 标志名 值为1 值为0 OF 溢出标志 OV NV SF 符号标志 NG PL ZF 零标志 ZR NZ CF 进位标志 CY NC AF 辅助进位标志 AC NA PF 奇偶标志 PE PO,例:ADD AX, BX JO / JC ERROR ?,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,标志寄存器 ( FLAGS),控制标志 符号 标志名 值为1 值为0 DF 方向标志 DN UP IF 中断标志 EI DI TF 陷阱标志 没定义,4、段寄存器组(4个/6个)简介都是16位: 代码段CS、数据段DS、堆栈段CS、附加段ES、附加数据段(FS和GS);,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.4.1、存储单元的物理地址: Def:为了便于读写信息,内存中按照字节编址即每个字节有一个唯一编号,该编号位该单元的物理地址; 注意:字节编址、二进制表示、十六进制书写;参见图(2.5),存储器以字节(8 bit)为编程单位 每个字节单元都有唯一的地址编码 地址用无符号整数来表示(编程用十六进制表示) 一个字要占用相继的两个字节 低位字节存入低地址,高位字节存入高地址 对字,双字,四字单元的地址一律以最低字节地址表示 机器以偶地址访问(读 / 写)存储器,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.4、存储器的存储单元地址和存储内容,2.4.2、存储单元中的内容:,Def:逻辑地址段地址和偏移地址统称逻辑地址; 若:X单元存放的内容是Y单元的地址,则Y单元的内容表示为:(Y)=(X) 字节,字,双字,四字长内容在存储器中的存储形式低对低,高对高 字节内容(10000H)9FH; (10001H)26H 访问一次内存 字内容 (10000H)269FH;(10001H)4826H 访问两次内存 双字内容(10000H)8348 269FH;(10001H)5C83 4826H 访问四次内存,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.4.3、实模式存储器寻址(寻址如何形成物理地址),(1)、def:实模式采用16位段地址和16位地址偏移形成20位物理地址; 最大寻址空间1MB,最大分段为64KB的存储器寻址方式? def:保护模式采用16位段地址和32位偏移地址形成32位物理地址; 最大寻址空间为4GB,最大分段为4GB的存储器寻址方式; (2)、存储器地址分段: 20 根地址线: 地址范围 00000HFFFFFH (1MB) 机器字长16位:仅能表示地址范围 0000HFFFFH(64KB) 小段:每16个字节为一小段,共有64K个小段 小段的首地址 00000 H 0000F H 00010 H 0001F H 00020 H 0002F H FFFF0 H FFFFF H 段起始地址(段基址)每一小段起始地址的高16位(低4位为0); 偏移地址(有效地址:EA)段内相对于段起始地址的偏移值; 64K 范围内的任意字节;,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,(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存放附加的数据段基址; 注意:、每个段寄存器定义的段可以独占64KB,也可重叠(见图2.9); 、段寄存器与其对应存放偏移地址的寄存器之间有默认关系(见表2.3与表2.4),后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,支持多任务处理功能 支持虚拟存储器特性,2.4.4、保护模式下存储器寻址 16位选择器的值经过操作系统的地址转换操作变成32位的段地址,然后加上32位的偏移地址而形成了32位的物理地址;,保护模式下的存储器寻址,所选存储单元,描 述 符64,描述符表,所选段,存 储 器,段基地址32,选择器16,偏移地址 32,逻辑地址,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.4.5、寄存器与存储器的比较:,寄 存 器 存 储 器 在CPU内部 在CPU外部 访问速度快 访问速度慢 容量小,成本高 容量大,成本低 用名字表示 用地址表示 没有地址 地址可用各种方式形成,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,1、外部接口组成:由一组“寄存器”及相关“控制电路组成”; 、数据寄存器存放主机与外设交换的数据; 、状态寄存器存放外设和接口的当前状态信号; 、命令寄存器存放CPU给外的控制命令; 2、Def:端口地址(又称“端口号” )外设寄存器的地址(即编号) 、编址方式独立编址、混合编址; 、80x86I/O地址空间为64KB(即65536个B) 外设中每个寄存器有一个端口(Port)地址,构成一个独立于内存的 I/O 地址空间:0000HFFFFH 3、外设的例行程序通过中断方式转入的子程序,它完成一定的I/O功能;分两种:BIOS和DOS;,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,2.5、外部设备,第02讲 作业布置 Page33: 书面作业 习题2.2、习题2.3、习题2.4、 习题2.5、习题2.8;,后一讲,第02讲(第02周):8086计算机组织(3课时),总目录,前一讲,第03讲:8086寻址方式,教学要求: 1.掌握一般指令系统的基本概念:指令格式、功能和注意事项。 2.重点掌握8086/8088指令系统中,各指令的格式、寻址方式、指令类型 。 3.了解其他(奔腾等)的寻址方式和指令类型。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,第3章、80x86指令系统和寻址方式,总目录,3.1、指令系统的基本概念,计算机的指令系统就是指该计算机能够执行的全部指令的集合。 每种计算机都有它支持的指令集合。 16位8086指令系统是整个Intel 80x86 系列微处理器指令系统的基础。,3.1.1、指令系统,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,操作码说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分。,指令由操作码和操作数两部分组成。,操作数是指令执行的参与者,即各种操作的对象。 有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有三个甚至四个操作数,通常称为一地址指令、二地址指令、三,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,3.1.2 指令格式,指令的功能该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式。 指令支持的寻址方式该指令中的操作数可以采用何种寻址方式。 指令对标志的影响该指令执行后是否对各个标志位(OV、ZF、CF、PF等)有影响,以及如何影响。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,3.1.3 学习指令的注意事项,3.2.1 寻址、寻址方式的概念 寻址就是寻找操作数的地址。 寻址方式就是寻找操作数的方法。 操作数可以跟随在指令操作码之后,称为立即数. 操作数也可以存放在CPU内部的寄存器中,称为寄存器操作数. 绝大多数的操作数存放在内存储器中,称为存储器操作数. 指令指定操作数的位置,即给出地址信息,在执行时需要根据这个地址信息找到需要的操作数.,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,3.2、80x86寻址方式,指令助记符体现该指令的功能,它对应一条二进制编码的机器指令。 指令的操作数个数由该指令确定,可以没有操作数,也可以有一个、二个或三个操作数。 80X86寻址方式分类: 寻址的中心问题如何确定“偏移地址”的值; 第一类:与数据有关的十种方式立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址、比例变址寻址、基址比例变址寻址、相对基址比例变址寻址; 第二类:与转移地址有关的四种寻址方式段内直接寻址、段内间接寻址、段间直接寻址、段间间接寻址; 说明:同一指令的多个操作数可各自采用不同的寻址方式。,3.2.2 80X86的指令格式 指令助记符 操作数1,操作数2,操作数3 ;注释,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,3.2.3 与数据有关的寻址方式 与寻址方式有关的基础知识简介: (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)只与变址寄存器联用;只能为1、2、4或8; 注意:只能是32位寻址,没有16位寻址; 位移量(displacement)存放在指令中的一个8位、16位、32位地址偏移部分;可正可负;,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,(2)、段超越前缀形成物理地址时,段寄存器与访存类型之间有默认匹配关系,但有时可以使用段超越前缀来改变默认关系(参见P39表3.2); 格式:MOV AX,ES:2000H 特别注意:但以下三种情况不允许使用段超越前缀 串处理指令的目的串ES段; 取指指令CS段; PUSH的目的和POP的源SS段;,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,以 MOV 指令为例: 立即寻址 MOV AX , 3069H 寄存器寻址 MOV AL , BH 直接寻址 MOV AX , 2000H 寄存器间接寻址 MOV AX , BX 寄存器相对寻址 MOV AX , COUNTSI 基址变址寻址 MOV AX , BPDI 相对基址变址寻址 MOV AX , MASKBXSI 基址比例变址寻址 MOV EBX,EAXEDX*8 相对基址比例变址寻址 MOV EAX,TABLEEBPEDI*4,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,1)立即寻址方式没有EA,图形表示:,定义:操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。,汇编格式:n(n为立即操作数,是用8位或16位二进制补码表示的有符号数) 实列:MOV AH,5 MOV AH, 05H MOV AX,3064H MOV EAX,12345678H,功能:操作数存放在存储器,指令下一单元的内容为立即操 作数n。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,【例3.1】 MOV AX, 4576H 执行后(AX)=?,该例中源操作数为立即寻址方式,立即数为4576H,存放在指令的下一单元。,执行:4576HAX,执行后:(AX)=4576H,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,2)寄存器寻址方式没有EA,定义:指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助记符)的寻址方式称为寄存器寻址方式。,汇编格式:R (其中R表示寄存器名,如AX、BX等。) 实例: MOV AX, BX,功能:操作数直接存放在寄存器R中。,图形表示:,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,指令中可以引用的寄存器及其符号名称如下: 8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL; 16位寄存器:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等; 32位寄存器:EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP。,注意:由于指令所需的操作数已存储在寄存器中,或操作的结果存入寄存器,这样,在指令执行过程中,会减少读/写存储器单元的次数,所以,使用寄存器寻址方式的指令具有较快的执行速度。通常情况下,提倡在编写汇编语言程序时,应尽可能地使用寄存器寻址方式,但也不要把它绝对化。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,【例3.2】下列程序执行后,(AX)=?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX,执行: AX1234H,执行: BX5678H,执行: AX(AX)+(BX),执行后:(AX)=68ACH,(BX)=5678H,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,3)直接寻址方式EA=位移量,定义:指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。,汇编格式:含有变量的地址表达式。,功能:指令下一字单元的内容是操作数的偏移地址EA。,图形表示:,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,【例3.3】 执行指令:MOV BX ,1234H 设(DS)=2000H。 执行后:(BX)=?,34H,12H,执行:BX(21234H),执行后:(BX)= 5213H,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,13,52,在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。 例如:MOV ES:1000H, AX,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,注意:立即寻址方式和直接寻址方式的书写格式不同,直接寻址的地址要写在括号“”,“”内。在程序中,直接地址通常用内存变量名来表示,如:MOV BX, VARW,其中,VARW是内存字变量; 试比较下列指令中源操作数的寻址方式(VARW是内存字变量):,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,4)寄存器间接寻址方式EA=基址/变址,定 义:操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。,汇编格式:R 格式示例:MOV AX,BX 或 MOV AX,ES:BX,功 能:寄存器R存放操作数的偏移地址EA。,图形表示:,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,【例3.4】假设有指令:MOV BX, DI,在执行时,(DS)=1000H,(DI)=2345H,存储单元12345H的内容是4354H。问执行指令后,BX的值是什么?,解:寄存器DI的值不是操作数,而是操作数的地址。该操作数的物理地址应由DS和DI的值形成,即: PA=(DS)*16+DI=1000H*16+2345H=12345H。,该指令的执行效果是: 把从物理地址为12345H开始的一个字的值传送给BX。,43 54,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,在不使用段超越前缀的情况下,有下列规定: 若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS; 若有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。 该寻址方式物理地址的计算方法如下: BX 物理地址PA=16DS + SI DI 或 物理地址PA=16SS+ BP,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,定 义:操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容和指令中的8位/16位偏移量之和。 汇编格式:XR(位移量X,是8位或16位二进制补码表示的有符号数) 格式示例:MOV AX,COUNTSI 或 MOV AX,3000HSI MOV AX,COUNT+SI 或 MOV AX,3000H+SI MOV AX,ES:COUNTSI 或 MOV AX,ES:COUNT+SI 功能:操作数存放在存储器,寄存器R的内容加位移量X为操作数的偏移地址EA。 图形表示:,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,5)寄存器相对寻址方式EA=基址/变址+位移量,总目录,【例3.5】假设指令:MOV BX, SI+100H,在执行它时,(DS)=1000H,(SI)=2345H,内存单元12445H的内容为2715H,问该指令执行后,BX的值是什么? 解:EA=(SI)+100H=2345H+100H=2445H PA=(DS)16+EA=1000H16+2445H=12445H。 所以,该指令的执行效果是: 把从物理地址为12445H开始 的一个字的值传送给BX。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,定 义:操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。 汇编格式: BR+IR 格式示例:MOV AX,BXSI 或 MOV AX,BX+SI MOV AX,ES:BXSI 或 MOV AX,ES:BX+SI 功能:操作数存放在存储器,BR的内容加IR的内容是操作数的偏移地址EA。 图形表示:,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,6)基址变址寻址方式EA=基址+变址,总目录,【例3.6】假设指令:MOV BX, BX+SI,在执行时,(DS)=1000H,(BX)=2100H,(SI)=0011H,内存单元12111H的内容为1234H。问该指令执行后,BX的值是什么? 解:操作数的物理地址PA为: PA =(DS)*16+ (BX)+(SI) =1000H*16+ 2100H+0011H =12111H 所以,该指令的执行效果是: 把从物理地址为12111H开始 的一个字的值传送给BX。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,定 义:操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位/16位位移量之和。 汇编格式:varBR+IR 格式示例:MOV AX,COUNTBXSI 或 MOV AX,-46HBXSI MOV AX,COUNTBX+SI 或 MOV AX,0246HBX+SI MOV AX,COUNT+BX+SI 或 MOV AX,-56H+BX+SI MOV AX,ES:COUNTBXSI 或 MOV AX,ES:0246H+BX+SI 功 能:操作数存放在存储器,BR内容加IR内容加位移量X是操作数的偏移地址EA。 图形表示:,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,7)相对基址变址寻址方式EA=基址+变址+位移量,总目录,【例3.7】假设指令:MOV AX, BX+SI+200H,在执行时,(DS)=1000H,(BX)=2100H,(SI)=0010H,内存单元12310H的内容为1234H。问该指令执行后,AX的值是什么? 解:该操作数的物理地址应由DS和EA的值形成; 即:PA=12310H 所以,该指令的执行效果是: 把从物理地址为12310H开始 的一个字的值传送给AX。,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,跨段越问题,凡是使用寄存器为BX、SI、DI时,其默认段为DS,使用BP时,默认段为SS。该规定为系统默认状态。当要否定默认状态,到非约定段寻找操作数时,必须用跨段前缀指明操作数的段寄存器名。 汇编格式:段寄存器名:操作数地址。 功 能:冒号“:”之前的段寄存器名指明操作数所在的段。 【例3.8】 MOV AX,DS:BP MOV CX,SS:SI 该例中,DS:,SS:均为跨段前缀,此时默认状态无效,操作数的物理地址PA由段寄存器内容左移4位加偏移EA形成。上述2条指令的源操作数物理地址分别为: PA1 =(DS)左移4位+BP PA2 =(SS)左移4位+ SI,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,总目录,格式: MOV EAX,MASKESI*4 或 MOV EAX,MASK+ESI*4 讲解:eg3.12,第03讲(第03周):8086寻址方式(3课时),前一讲,后一讲,8)相对比例变址寻址EA=变址比例因子+位移量,格式: MOV EBX,EAXEDX*8 或 MOV EBX,EAX+EDX*8 或 MOV EBX,ESPEAX*2,格式: MOV EAX,TABLEEBPEDI*4 或 MOV EAX,TABLE+EBP+EDI*4 8位/16位/32位的位移量 注意1:比例因子只能与32位变址寄存器:EAX、EBX、ECX、EDX、EBP、ESI、 EDI联用;且比例因子只能为1、2、4或8; 注意2: 8)、9)、10)只能是32位寻址,没有16位寻址;,9)基址比
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位教师招聘考试教育心理学真题模拟精练
- 2025年黑龙江省事业单位招聘考试教师招聘生物学科专业知识试卷真题模拟
- 武汉事业单位招聘考试综合类职业能力倾向测验真题模拟试卷
- 衡阳生地会考试卷及答案2024
- 新解读《GB-T 39315.3-2020军民通 用资源 数据模型 第3部分:器材类 航材》
- 网红影响者品牌塑造-洞察与解读
- 水泥基材料改性研究-洞察与解读
- 2025国考山西统计局申论易错点
- 2025国考保定市行政管理岗位行测高频考点及答案
- 2025国考福建税务局行测易错点
- 调试、试运行与移交管理方案
- GB/T 26655-2011蠕墨铸铁件
- 热镀锌钢管技术标准
- 周三多管理学第03章管理的基本原理
- 基础生态学第4章种群及其基本特征课件
- 虚拟现实与增强现实头戴显示关键技术及应用项目
- (完整)公共卫生基本知识考试题题库及答案
- 《电力工业企业档案分类规则0大类》(1992年修订版)
- GB∕T 26520-2021 工业氯化钙-行业标准
- 温州医科大学《儿科学》支气管肺炎
- 常见传染病预防知识ppt-共47页课件
评论
0/150
提交评论