资源预览内容
第1页 / 共187页
第2页 / 共187页
第3页 / 共187页
第4页 / 共187页
第5页 / 共187页
第6页 / 共187页
第7页 / 共187页
第8页 / 共187页
第9页 / 共187页
第10页 / 共187页
亲,该文档总共187页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统第第3章章-1 寻址方式和指令系统寻址方式和指令系统教学重点教学重点: :指令系统的一般概念指令系统的一般概念对操作数的对操作数的寻址方式寻址方式六大类六大类指令的操作原理:指令的操作原理:操作码的含义操作码的含义指令对操作数的要求指令对操作数的要求指令执行的结果指令执行的结果第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统指指 令:令:控制计算机完成指定操作的命令;控制计算机完成指定操作的命令;机器指令:机器指令:指令的二进制代码形式,如:指令的二进制代码形式,如:CD21H;汇编指令:汇编指令:助记符形式的指令,如:助记符形式的指令,如:INT 21H;指令系统:指令系统:CPU所有指令及其使用规则的集合。所有指令及其使用规则的集合。8088/8086指令系统指令系统:(1)指令指令向后兼容(向后兼容(x86系列);系列);(2)应用广泛)应用广泛,资料丰富。,资料丰富。第第3章章-1 寻址方式和指令系统寻址方式和指令系统概述第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统寻寻址址方方式式:指指CPU指指令令中中规规定定的的寻寻找找操操作作数数所所在在的的地址的方式。地址的方式。操作数操作数: MOV AL, 05H 操作码操作码 目的操作数目的操作数 , 源操作数源操作数操作数引用时的字节顺序操作数引用时的字节顺序:1.若存放的信息是字节,则按顺序存放若存放的信息是字节,则按顺序存放2.若若存存放放的的信信息息是是字字,则则将将字字的的低低位位字字节节存存放放在在低低地址,高位字节存放在高地地址,高位字节存放在高地址址注:注:如果如果没有特别说明,寻址方式是指没有特别说明,寻址方式是指源操作数源操作数的寻址的寻址 方式。方式。寻址方式寻址方式第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统8088/8086的操作数分为的操作数分为3类类1、立即数(常数)取值范围如下表:取值范围如下表:8位位16位位无符号数无符号数00H-FFH(0-255)0000H-FFFFH(0-65535)带符号数带符号数80H-7FH(-128127)8000H-7FFFH(-3276832767)MOV AX,0FA00H;正确正确MOV 8000H,DX;错误错误第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统放在放在8个个通用寄存器通用寄存器或或4个段寄存器个段寄存器中的操作数中的操作数16位位AXAHAL16位位BXBHBL16位位CXCHCL16位位DXDHDL2、寄存器操作数第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统只能存放只能存放字字操作数操作数段段寄寄存存器器存存放放当当前前操作数的操作数的段基地址段基地址不不允许将立即数传送至段寄存器!允许将立即数传送至段寄存器!SIDIBPSPCSDSESSS第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统存储器操作数存储器操作数字节字节字字双字双字124类型类型存储单元个数存储单元个数一般一般不允许两个操作数同时为存储器操作数不允许两个操作数同时为存储器操作数3、存储器操作数第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统一条指令的指行时间=指令的执行时间指令的执行时间取取指令指令取操作数取操作数执执行指令行指令传传送结果送结果单单位用位用时钟周期时钟周期数表示数表示建议:建议: 1)尽量使用寄存器作为操作数)尽量使用寄存器作为操作数 2)若有可能,用移位代替乘除法)若有可能,用移位代替乘除法 3)尽量使用简单的寻址方式)尽量使用简单的寻址方式第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.1.1 立即寻址立即寻址立立即即寻寻址址方方式式中中,指指令令操操作作码码和和操操作作数数都都在在存存储器的储器的代码段代码段中。中。汇汇编编格格式式:n(n为为立立即即操操作作数数,是是用用8位位或或16位位二进制补码表示的有符号数)二进制补码表示的有符号数)功功能能:操操作作数数存存放放在在存存储储器器,指指令令下下一一单单元元的的内容为立即操作数内容为立即操作数n。图形表示:图形表示:立即寻址只能用于源操作数立即寻址只能用于源操作数MOV AX, 1C8FHMOV BYTE PTR 2A00H, 8FH错误例:错误例: MOV 2A00H, AX ; 错误!错误! 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例例3.1指令操作例:指令操作例:MOV AX,3102H ; AX 3102H执行后,执行后,(AH) = 31H,(AL) = 02H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.1.2 直接寻址直接寻址汇编格式:汇编格式:含有变量的地址表达式。含有变量的地址表达式。 段寄存器名段寄存器名:EA 。功功能能:有有效效地地址址由由指指令令直直接接给给出出,有有效效地地址址只包含位移量。只包含位移量。图形表示:图形表示:默认的段寄存器为默认的段寄存器为DS,但也可,但也可以显式地指定其他段寄存器以显式地指定其他段寄存器称称为为段超越前缀段超越前缀偏移地址也可用符号地址来表示,偏移地址也可用符号地址来表示,如如ADDR、VAR第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例例3.2:指令操作例:指令操作例:MOV AX,3102H AL (3102H) , AH (3103H)如果(DS)=2000H, (23012H) = CDH, (23013H) = ABH则操作数的物理地址为: 20000H+3102H = 23102H指令执行后:MOV操作码操作码02H31HAHAL23102HCDHABH存储器存储器代码段数据段.(AX) = 0ABCDH第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.1.3 寄存器寻址寄存器寻址寄寄存存器器寻寻址址方方式式的的操操作作数数在在指指令令指指明明的的寄寄存存器器中。中。汇编格式:汇编格式:R (R为寄存器名)为寄存器名)功能:功能:操作数直接存放在寄存器操作数直接存放在寄存器R中。中。图形表示:图形表示: R 指令指令 操作数操作数源操作数与目的操作数字长要相同源操作数与目的操作数字长要相同;寄存器寻址与段地址无关。寄存器寻址与段地址无关。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例例3.3 下列程序执行后,(下列程序执行后,(AX)=?,(?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX该该程程序序中中MOV指指令令为为数数据据传传送送指指令令操操作作符符,ADD指指令令为为加加法法指指令令操操作作符符,三三条条指指令令皆皆为为双双操操作作数数指指令令。第第一一、二二条条指指令令AX、BX皆皆为为目目的的操操作作数数地地址址,为为寄寄存存器器寻寻址址方方式式。第第三三条条指指令令中中,AX为为目目的的操操作作数数地地址址,BX为为源源操作数地址。源地址和目的地址皆为寄存器寻址方式。操作数地址。源地址和目的地址皆为寄存器寻址方式。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统图形表示:图形表示:执行:执行:1234HAX 5678HBX (AX)+(BX) AX执行后:(执行后:(AX)= 68ACH,(,(BX)= 5678H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.1.4 寄存器间接寻址寄存器间接寻址寄寄存存器器间间接接寻寻址址方方式式中中,寄寄存存器器的的内内容容为为操操作作数的偏移地址数的偏移地址EA,操作数在操作数在存储器存储器中。中。汇编格式:汇编格式:R功功能能:操操作作数数存存放放在在存存储储器器,寄寄存存器器R存存放放操操作数的偏移地址作数的偏移地址EA。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统偏移地址偏移地址EA计算方法如下:计算方法如下:EA=SISI作间址寄存器。 DIDI作间址寄存器。BX BX作间址寄存器。BP BP作间址寄存器。以以SI、DI、BX为为间间址址时时,默默认认的的段段地地址址寄寄存存为为DS;以以BP为间址时,默认的段地址寄存为为间址时,默认的段地址寄存为SS;只有只有SI、DI、BX和和BP可作间址寄存器。可作间址寄存器。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例例3.4:指令操作例:MOV AX,SI若 (DS)=6000H, (SI)=1200H, (61200H)=44H, (61201H)=33H则指令执行后,(AX)=3344H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.1.5 变址寻址变址寻址变变址址寻寻址址方方式式操操作作数数的的偏偏移移地地址址EA为为寄寄存存器器的的内容加位移量,操作数在内容加位移量,操作数在存储器存储器中。中。汇汇编编格格式式:XR(X表表示示位位移移量量,是是8位位或或16位位二进制补码表示的有符号数)二进制补码表示的有符号数)功功能能:操操作作数数存存放放在在存存储储器器,寄寄存存器器R的的内内容容加位移量加位移量X为操作数的偏移地址为操作数的偏移地址EA。图形表示如下:图形表示如下:第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统偏移地址偏移地址EA计算方法如下:计算方法如下:第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例3.5: MOV AX, BX+8 MOV CX, TABLESI MOV AX, BP+1000H ; 默认段寄存器为SSl 指令操作例:MOV AX,DATABX 若(DS)=6000H, (BX)=1000H, DATA=2A00H, (63A00H)=66H, (63A01H)=55H 则物理地址 = 60000H + 1000H + 2A00H = 63A00H指令执行后:(AX)=5566H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统MOV AX,DATABX第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.1.6 基址基址变址寻址变址寻址基基址址变变址址寻寻址址方方式式中中,操操作作数数的的偏偏移移地地址址EA是是指指令令中中基基址址寄寄存存器器内内容容、变变址址寄寄存存器器内内容、位移量三项之和,操作数在存储器中。容、位移量三项之和,操作数在存储器中。汇编格式:汇编格式:XBRIR功功能能:操操作作数数存存放放在在存存储储器器,BR的的内内容容加加IR的内容加位移量的内容加位移量X是操作数的偏移地址是操作数的偏移地址EA。图形表示:图形表示:第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统l 由由基址寄存器基址寄存器( (BXBX或或BP)BP)给出给出 基址寻址方式基址寻址方式l 由由变址寄存器变址寄存器(SI(SI或或DI)DI)给出给出 变址寻址方式变址寻址方式l 同一组内的寄存器不能同时出现同一组内的寄存器不能同时出现第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统操作数偏移地址操作数偏移地址EA计算方法如下计算方法如下第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例例3.6:MOV AX,DATADIBX若(DS)=8000H, (BX)=2000H, (DI)=1000H, DATA=200H则指令执行后:(AH)=83021H, (AL)=83020H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统使用基址使用基址-变址寻址方式可以很方便地访问二维数组变址寻址方式可以很方便地访问二维数组。基址寄存器基址寄存器数组首地址数组首地址变址寄存器变址寄存器数组元素数组元素行行址址位移量位移量数组元素数组元素列列址址(偏移地址)偏移地址)二维数组例:内存图示(按行存储)二维数组例:内存图示(按行存储)(行位移地址)(行位移地址)(行内元素下标)(行内元素下标)1 8 32 5 24 0 9A = 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.1.7 隐含寻址隐含寻址l 指令操作数是隐含的,在指令中未显式地指明。指令操作数是隐含的,在指令中未显式地指明。l 例:例:MUL BL 指令隐含了被乘数指令隐含了被乘数AL及乘积及乘积AXl 类似的指令还有:类似的指令还有:DIV、CBW、MOVS等等(AL)(BL)AX第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.1.8 I/O 端口寻址 直接端口寻址直接端口寻址 可以对可以对0255的端口编号进行寻址的端口编号进行寻址 间接端口寻址间接端口寻址 用寄存器用寄存器DX的内容来指定端口地址,可以对的内容来指定端口地址,可以对 编号为编号为065535的端口进寻址。的端口进寻址。 只能用输入指令只能用输入指令IN或输入指令或输入指令OUT来访问来访问I/O 端口。端口。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.1.9 跨段问题跨段问题按按前前述述规规定定:若若选选用用BP作作间间址址寄寄存存器器、变变址址寄寄存存器器或或基基址址寄寄存存器器,则则操操作作数数在在堆堆栈栈段段,操操作作数数的的物物理理地地址址PA由由堆堆栈栈段段寄寄存存器器SS的的内内容容左左移移4位位与与偏偏移移地地址址EA相相加加后后形形成成;否否则则,操操作作数数在在数数据据段段,操操作作数数的的物物理理地地址址PA由由数数据据段段寄寄存存器器DS的的内内容容左左移移4位位与与偏偏移移EA相相加加后后形形成成。该该规规定定为为系系统统默默认认状状态态。当当要要否否定定默默认认状状态态,到到非非约约定定段段寻寻找找操操作作数数时时,必必须须用用跨跨段段前前缀缀指指明明操操作作数数的的段寄存器名。段寄存器名。汇编格式:汇编格式:段寄存器名:操作数地址段寄存器名:操作数地址功能:功能:段寄存器名指明操作数属哪个段。段寄存器名指明操作数属哪个段。 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例例3.3.9 9 跨段前缀示例。跨段前缀示例。 MOVAX,DS:BP MOVCX,SS:SI 该该例例中中,DS:,SS:均均为为跨跨段段前前缀缀,此此时时默默认认状状态态无无效效,操操作作数数的的物物理理地地址址PA由由段段寄寄存存器器内内容容左左移移4位位加加偏偏移移EA形形成成。上上述述2条条指指令令的的源源操操作作数物理地址分别为:数物理地址分别为:PA1 =(DS)左移左移4位位+BPPA2 =(SS)左移左移4位位+SI第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统小结小结l指令由(指令由( )和()和( )构成)构成l如何取得操作数如何取得操作数称为(称为( )操作码操作码 操作数操作数寻址方式寻址方式第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统l寻址寻址方式可分为方式可分为立即寻址立即寻址直接寻址直接寻址变址寻址变址寻址寄存器寻址寄存器寻址基址基址-变址寻址变址寻址寄存器间接寻址寄存器间接寻址基址寻址基址寻址第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统几种寻址方式比较第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统8086/8088的指令系统的指令系统指令系统指令系统是一台计算机所能识别和执行的全部是一台计算机所能识别和执行的全部指令的集合。指令的集合。指令一般包括两个部分:指令一般包括两个部分:操作码域操作码域和和地址域地址域。操作码域操作码域存放指令的操作码,即指明该指令应存放指令的操作码,即指明该指令应由计算机完成何种操作。由计算机完成何种操作。地址域地址域确定操作数的值或地址、操作结果的地确定操作数的值或地址、操作结果的地址,有的指令的地址域还指出下一条指令的地址。址,有的指令的地址域还指出下一条指令的地址。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统 机器指令机器指令:计算机能识别的代码,机器指令:计算机能识别的代码,机器指令是由二进制数组成的。是由二进制数组成的。 例如:例如:ADD CL,BH 指令格式为:指令格式为:0000001011001111 PUSHAX 机器指令为:机器指令为:01010000 汇编语言汇编语言:汇编语言是一种符号语言,用助:汇编语言是一种符号语言,用助记符表示操作码,用符号或符号地址表示操作记符表示操作码,用符号或符号地址表示操作数或操作数地址,它与机器指令是一一对应的。数或操作数地址,它与机器指令是一一对应的。 汇编程序汇编程序:MASM.EXE将汇编语言源程序翻将汇编语言源程序翻译成机器语言,即目标程序。译成机器语言,即目标程序。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.2 数据传送类指令数据传送类指令3.2.1 通用数据传送指令通用数据传送指令3.2.2 堆栈操作指令堆栈操作指令3.2.3 标志寄存器传送指令标志寄存器传送指令3.2.4 地址传送指令地址传送指令3.2.5 输入输出指令输入输出指令第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.2.1 通用数据传送指令通用数据传送指令1传送指令传送指令MOV2数据交换指令数据交换指令XCHG3查表转换指令查表转换指令 XLAT第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统1传送指令传送指令MOV语句格式:语句格式:MOV OPD,OPS功功能能:将将源源操操作作数数传传送送入入目目的的地地址址,源源地址内容不变。即(地址内容不变。即(OPS)OPD。下下图图描描述述了了MOV指指令令在在传传送送数数据据时时允允许许传送的路径及类型。传送的路径及类型。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统MOV指令所允许的数据传送路径及类型指令所允许的数据传送路径及类型第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统MOV指令使用规则指令使用规则1) IP不能作目的寄存器不能作目的寄存器2) 不允许不允许memmem3) 不允许不允许segregsegreg4) 立即数不允许作为目的操作数立即数不允许作为目的操作数5) 不允许不允许segreg立即数立即数6) 源操作数与目的操作数类型要一致源操作数与目的操作数类型要一致第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统几个不能传送的解决办法:用AX作桥梁 存储器存储器存储器:存储器: MOV AX,MEM1 MOV MEM2,AX段寄存器段寄存器段寄存器:段寄存器: MOV AX,DS MOV ES,AX段寄存器段寄存器立即数:立即数: MOV AX,DATA MOV DS,AX第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例:存储器与寄存器间数据传送。例:存储器与寄存器间数据传送。MOV AX,BUF ;BUF是变量,源操作数为直接寻址是变量,源操作数为直接寻址MOV BH,DI ;源操作数为寄存器间接寻址源操作数为寄存器间接寻址MOV DI,ES:3SI ;源操作数为变址寻址,使用跨段源操作数为变址寻址,使用跨段 前缀前缀MOV BP,3BX+SI;源操作数为基址源操作数为基址-变址寻址变址寻址MOV BUFA,DL ;BUFA是一字节变量是一字节变量MOV BP,AX ;使用使用SS段寄存器段寄存器MOV DS:BP,DL;使用跨段前缀使用跨段前缀MOV BUF,DS ;BUF是个字变量是个字变量第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统2数据交换指令数据交换指令XCHG语句格式:语句格式:XCHG OPD,OPS功功 能能 : 将将 源源 地地 址址 与与 目目 的的 地地 址址 中中 的的 内内 容容 互互 换换 。 即即(OPD)OPS,(,(OPS)OPD。两操作数中必须有一个在寄存器中;两操作数中必须有一个在寄存器中;操作数不能为操作数不能为段寄存器段寄存器和和立即数立即数;源和目地操作数源和目地操作数类型类型要一致。要一致。例:例:MOV AX,5678H ;(;(AX)=5678HMOV BX,0FFFFH ;(;(BX)=0FFFFHXCHG AX,BX(AX)=0FFFFH ,(,( BX)=5678H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3换码指令换码指令/查表指令查表指令 XLAT语句格式:语句格式:XLAT OPS或或XLAT功功能能:将将(BX)为为首首址址(AL)为为位位移移量量的的字字节节存存储储单单元元中中的的数数据据送送AL寄寄存存器器。即(即(BX+AL)AL。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.2.2 堆栈操作指令堆栈操作指令1进栈指令进栈指令PUSH2出栈指令出栈指令POP第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统什么是堆栈? 按“后进先出(LIFO)”方式工作的存储区域。堆栈以字为单位以字为单位进行压入/弹出操作。为什么要设置堆栈?为什么要按 “后进先出”方式工作?参见下图第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统规规定定由由SS指指示示堆堆栈栈段段的的段段基基址址,堆堆栈栈指指针针SP始始终终指指向向堆堆栈栈的的顶顶部部,SP的的初初值值规规定定了了所所用用堆堆栈栈区区的的大小。堆栈的最高地址叫大小。堆栈的最高地址叫栈底栈底。 SPSS堆栈段堆栈段进栈方向退栈方向栈底栈底栈顶栈顶低地址低地址高地址高地址第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统 压栈指令压栈指令 PUSH src ; src为为16位操作数位操作数 例:例:PUSHAX;将;将AX内容压栈内容压栈 执行操作:(执行操作:(SP)-1高字节高字节AH (SP)-2低字节低字节AL (SP)(SP)- 2第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统设(AX)=1020H,执行示意图如下:低地址存储区(SS段)执行前(AX)=1020H(SP)存储区(SS段)进栈方向执行后20H10H(AL)(AH)PUSH AX指令执行示意图指令执行示意图(SP)-2(SP)高地址低地址高地址(SP)- -1第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统压栈指令的格式为:压栈指令的格式为: PUSH reg PUSH mem/reg PUSH segreg例如:例如: PUSH AX PUSH BX PUSH DS 注意进栈方向是注意进栈方向是高地址高地址向向低地址低地址发展。发展。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统 弹出指令弹出指令 POPPOPdestdest例:例:POPPOPBXBX;将栈顶内容弹至将栈顶内容弹至BXBX 执行操作:(执行操作:(BLBL)(SPSP) (BHBH)(SPSP)+1+1 (SPSP)(SPSP)+2+2第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统POP BX 的执行示意图如下图所示POP BX指令执行示意图指令执行示意图第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统堆栈指令使用时应注意几点:堆栈操作总是按字字进行一般不能从栈顶弹出一个字给CS堆栈指针为SS:SP,SP永远指向栈顶栈顶SP自动进行增减量2第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.2.3 标志寄存器传送指令标志寄存器传送指令1标志送标志送AH指令指令LAHF2AH送标志指令送标志指令SAHF3标志寄存器进栈指令标志寄存器进栈指令PUSHF4标志寄存器出栈指令标志寄存器出栈指令POPF第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统标志寄存器标志寄存器第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统1标志送标志送AH指令指令LAHF语句格式:语句格式:LAHF功能:功能:将标志寄存器的将标志寄存器的低低8位位送入送入AH寄存器。寄存器。即即(FLAGS)7-0AH。该该指指令令的的执执行行对对标标志位志位无影响无影响。例:例:标志寄存器传送。标志寄存器传送。执行前:执行前:(FLAGS)=0485H,(AX)=0FFFFH执行指令:执行指令:LAHF (AX)=?第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统2AH送标志指令送标志指令SAHF语句格式:语句格式:SAHF功功能能:将将AH的的内内容容送送入入标标志志寄寄存存器器的的低低8位位,高高8位不变。即(位不变。即(AH) FLAGS7-0.。从该指令功能可看出,从该指令功能可看出,SAHF为为LAHF的逆过程。的逆过程。问题:问题:将标志将标志ZF置置0?第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3标志寄存器进栈指令标志寄存器进栈指令PUSHF语句格式:语句格式:PUSHF功功能能:将将标标志志寄寄存存器器的的内内容容压压入入堆堆栈栈。即(即(FLAGS)(SP)。)。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统4标志寄存器出栈指令标志寄存器出栈指令POPF功功能能: 将将栈栈顶顶内内容容弹弹出出送送入入标标志志寄寄存存器器中中。即即(SP)FLAGS。 POPF指令与指令与PUSHF指令互为逆过程。指令互为逆过程。例:例:将标志寄存器的单步标志将标志寄存器的单步标志TF置位。置位。PUSHF ;(;(FLSGS)(SP)POP AX ;(;(SP)AXOR AX, 0100H;设置设置D8=TF=1PUSH AX ;(;(AX)(SP)POPF ;(;(SP)FLAGS,即即(AX)FLAGS第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.2.4 地址传送指令地址传送指令1传送偏移地址指令传送偏移地址指令 LEA2传送偏移地址及数据段首址指令传送偏移地址及数据段首址指令LDS3传送偏移地址及附加数据段指令传送偏移地址及附加数据段指令LES第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统1传送偏移地址指令传送偏移地址指令 LEA语句格式:语句格式: LEA OPD,OPS功功能能:将将源源操操作作数数的的有有效效地地址址即即16位位偏偏移移地地址址传送到目的寄存器中。传送到目的寄存器中。例:例:主存偏移地址的获取。主存偏移地址的获取。MOV BX,0100H ;(;(BX)= 0100HMOV SI,0210H ;(;(SI)= 0210HLEA BX,1234HBXSI ;(BX)= ?第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统注意以下两条指令差别: LEA BX,BUFFER MOV BX,BUFFER前者前者表示将符号地址为BUFFER的存储单元的偏侈地址取到 BX中;后者后者表示将BUFFER存储单元中的内容取到 BX中。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统2传送偏移地址及数据段首址指令传送偏移地址及数据段首址指令LDS语句格式:语句格式:LDS OPD,OPS功功能能:将将主主存存中中指指定定字字单单元元数数据据送送入入指指定定存存储储器器,下下一一字字单单元元数数据据送送DS寄寄存存器器。即即(OPS)OPD,(,(OPS+2)DS。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例例 : (DS)=C000H, (C0010H)=80H, (C0011H)=01H, (C0012H)=00H, (C0013H)=20H,执行:执行:LDS SI,0010H则(则(SI)= ?,(?,(DS)= ?(SI)=0180H,(,(DS)=2000H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3传送偏移地址及附加数据段指令传送偏移地址及附加数据段指令LES语句格式:语句格式:LES OPD,OPS功功能能:将将主主存存某某字字单单元元内内容容送送指指定定寄寄存存器器。即(即(OPS)OPD,(,(OPS+2)ES。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.2.5 输入输出(输入输出(I/O)指令)指令1输入指令输入指令IN2输出指令输出指令OUT只限于用只限于用累加器累加器AL或或AX来传送信息。来传送信息。功能功能: (累加器累加器)I/O端口端口第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统1输入指令输入指令IN输输入入指指令令用用来来从从指指定定的的外外设设寄寄存存器器取取信信息息送送入入累累加加器器。它有四种形式:它有四种形式:(1)语句格式:语句格式:IN AL,PORT 功能:功能:(PORT)AL;端口号端口号0255(2)语句格式:语句格式:IN AX,PORT 功能:功能:(PORT)AX(3)语句格式:语句格式:IN AL,DX 功能:功能:(DX)AL; DX表示的端口范围达表示的端口范围达64K(4)语句格式:语句格式:IN AX,DX 功能:功能:(DX)AX第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统2输出指令输出指令OUT输输出出指指令令用用来来把把累累加加器器的的内内容容送送往往指指定定的的外外设存储器,它有四种形式:设存储器,它有四种形式:(1)语句格式:语句格式:OUT PORT,AL 功能:功能:(AL)PORT(2)语句格式:语句格式:OUT PORT,AX 功能:功能:(AX)PORT(3)语句格式:语句格式:OUT DX,AL 功能:功能:(AL)DX(4)语句格式:语句格式:OUT DX,AX 功能:功能:(AX)DX第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.3 算术运算类指令算术运算类指令3.3.1 加法指令加法指令3.3.2 减运算指令减运算指令3.3.3 乘运算指令乘运算指令3.3.4 除运算指令除运算指令3.3.5 符号扩展指令符号扩展指令 3.3.6 十进制调整指令十进制调整指令第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.3.1 加法指令加法指令1加加1指令指令 INC2加指令加指令ADD3带进位加指令带进位加指令ADC第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统1加加1指令指令 INC语句格式:语句格式:INC OPD功功能能:将将目目的的操操作作数数加加1,结结果果送送目目的的地地址址。即即(OPD)+1OPD。INC指指令令是是一一个个单单操操作作数数指指令令,操操作作数数可可以以是是寄寄存存器器或或存储器操作数存储器操作数。如:如:INC BX,即(即(BX)+1BX。加加1指令可用于对计数器和地址指针进行调整。指令可用于对计数器和地址指针进行调整。注:注:本指令不影响本指令不影响CF标志标志!第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统2加指令加指令 ADD语句格式:语句格式:ADD OPD, OPS功功能能:将将目目的的操操作作数数与与源源操操作作数数相相加加,结结果果存存入入目的地址目的地址中,中,源地址源地址的内容不改变。的内容不改变。即(即(OPD)+(OPS)OPD。例:例: ADD AL,30H ADDAX,BX+20H ADDCX,SI ADDDI,200HADD指令对标志位(指状态标志)都有影响。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3带进位加指令带进位加指令ADC语句格式:语句格式:ADC OPD,OPS功功能能:将将目目的的操操作作数数加加源源操操作作数数再再加加进进位位标标志志位位CF,结果送目的地址。,结果送目的地址。即(即(OPD)+(OPS)+ CF OPD。例:例:无符号双字加法运算。无符号双字加法运算。MOV AX,4652H ;(;(AX)=4652HADDAX,0F0F0H;(;(AX)=3742H,CF=1MOV DX,0234H ;(;(DX)=0234HADCDX,0F0F0H;(;(DX)=0F325H,CF=0第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统ADD/ADC对对条件标志位条件标志位(CF/OF/ZF/SF)的影响:的影响:CF位表示无符号数相加的溢出。位表示无符号数相加的溢出。OF位表示带符号数相加的溢出。位表示带符号数相加的溢出。1 结果为结果为负负0 否则否则SF=1 结果为结果为00 否则否则ZF=1 和的最高有效位有向高位的进位和的最高有效位有向高位的进位0 否则否则CF=1 两个操作数符号相同,而结果符号与之相反两个操作数符号相同,而结果符号与之相反0 否则否则OF=第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.3.2 减运算指令减运算指令1减减1指令指令DEC2减指令减指令SUB4带借位减指令带借位减指令 SBB3求补指令求补指令NEG5比较指令比较指令 CMP第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统1减减1指令指令DEC语句格式:语句格式:DEC OPD 功功能能:将将目目的的操操作作数数减减1,结结果果送送目目的的地地址址。即(即(OPD)1OPD。DEC指指令令是是一一个个单单操操作作数数指指令令,操操作作数数可可以以是是寄存器寄存器或或存储器操存储器操作数。作数。如:如:DEC CX。即(即(CX)1CX。注:本指令不影响CF标志第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统2减指令减指令SUB语句格式:语句格式:SUB OPD,OPS功功能能:目目的的操操作作数数减减源源操操作作数数,结结果果存存于于目目的的地地址址,源地址内容不变。源地址内容不变。即(即(OPD)()(OPS)OPD例:例:减法运算。减法运算。MOV AX ,5678H ;(;(AX)=5678HSUBAX ,1234H ;(;(AX)=4444HMOV BX ,3354H ;(;(BX)=3354HSUBBX ,3340H ;(;(BX)=0014H注:注:1.源和目的操作数不能同时为存储器操作数;源和目的操作数不能同时为存储器操作数; 2.立即数不能作为目的操作数。立即数不能作为目的操作数。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3带借位减指令带借位减指令 SBB语句格式:语句格式:SBB OPD ,OPS功功能能:目目的的操操作作数数减减源源操操作作数数再再减减借借位标志位位标志位CF,结果送目的地址。结果送目的地址。即(即(OPD)(OPS)CF OPD第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统4求补指令求补指令NEG语句格式:语句格式:NEG OPD功功能能:将将目目的的操操作作数数的的每每一一位位求求反反(包包括括符符号号位位)后后加加1,结果送目的地址。,结果送目的地址。等价:等价:0-OPD或或0FFFFH-OPD+1;例:例:求补运算。求补运算。MOV AX,0FF64HNEGAL ;(;(AX)=0FF9CHSUBAL,9DH;(;(AX)=0FFFFHNEGAX ;(;(AX)=0001HDECAL ;(;(AX)=0000HNEGAX ;(;(AX)=0000H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统SUB/SBB对标志位对标志位(CF/OF/ZF/SF)的影响的影响CF=1表示无符号数减法溢出。表示无符号数减法溢出。OF=1表示带符号数减法溢出。表示带符号数减法溢出。NEG指令对指令对CF/OF的影响:的影响:CF:操作数为操作数为0时,求补的结果使时,求补的结果使CF=0,否则,否则CF=1。OF:字节运算对字节运算对-128求补或字运算对求补或字运算对-32768求补时求补时OF=1, 否则否则OF=0。1 被减数的最高有效位有向高位的借位被减数的最高有效位有向高位的借位0 否则否则CF=1 两个操作数符号相反,而结果的符号与减数相同两个操作数符号相反,而结果的符号与减数相同0 否则否则OF=第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统5比较指令比较指令 CMP语句格式:语句格式:CMP OPD,OPS功功能能:目目的的操操作作数数减减源源操操作作数数,结结果果只只影影响响标标志位,不送入目的地址。志位,不送入目的地址。即(即(OPD)()(OPS)。)。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统根据标志位来判断比较的结果根据标志位来判断比较的结果1)根据根据ZF判断两个数是否相等。若判断两个数是否相等。若ZF=1,则则两数相等。两数相等。2)若两个数不相等,则分两种情况考虑若两个数不相等,则分两种情况考虑: 比较的是两个无符号数比较的是两个无符号数 若若CF=0,则则OPDOPS; 若若CF=1,则则OPDOPS。 比较的是两个有符号数比较的是两个有符号数 若若OF SF=0,则则OPDOPS; 若若OF SF=1,则则OPDOPS。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统比较指令在使用时,一般在其后紧跟一条条件转移指令,判断比较结果的转向。举例:举例:比较AL、BL、CL中带符号数的大小,将 最小数放在AL中。程序:程序: CMP AL,BL ;AL和和BL比较比较 JNG BBB ;若若ALBL,则转则转 XCHG AL,BL ;若若ALBL,则交换则交换 BBB: CMP AL,CL ;AL和和CL比较比较 JNG CCC ;若若ALCL,则转则转 XCHG AL,CL ;若若ALCL,则交换则交换 CCC: HLT第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.3.3 乘运算指令乘运算指令1无符号数乘法指令无符号数乘法指令MUL2有符号乘指令有符号乘指令IMUL进行乘法时:进行乘法时:8位位 8位位16位乘积位乘积 16位位 16位位32位乘积位乘积第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统1无符号数乘法指令无符号数乘法指令MUL语句格式:语句格式: MUL OPS功功能能: 若若是是字字节节数数据据相相乘乘,(AL)与与OPS相相乘乘得得到到字字数数据据存存入入AX中中;若若是是字字数数据据相相乘乘,则则(AX)与与OPS相相乘得到双字数据,高字存入乘得到双字数据,高字存入DX、低字存入低字存入AX中。中。即即字节乘法:字节乘法:(AL) (OPS) AX, 字乘法:字乘法:(AX) (OPS) DX,AX 例:例:无符号数无符号数0A3H与与11H相乘。相乘。MOV AL,0A3H;(;(AL)=0A3HMOV BL, 11H;(;(BL)=11HMUL BL ;(;(AX)=0AD3H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统2有符号乘指令有符号乘指令IMUL语句格式:语句格式:IMUL OPS功功能能:字字节节乘乘法法:(AL) (OPS)AX,字字乘乘法法:(AX) (OPS)DX、AX。IMUL指令除指令除计算对象计算对象是带符号二进制数外,其他都与是带符号二进制数外,其他都与MUL一样,但计算结果不同。一样,但计算结果不同。 例:例:有符号数有符号数0B4H与与11H相乘。相乘。MOV AL,0B4H;(;(AL)=B4HMOV BL,11H;(;(BL)=11HIMUL BL ;(;(AX)=0FAF4H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统注意:注意:MUL/IMUL指令中 AL(AX)为隐含的乘数寄存器; AX(DX,AX)为隐含的乘积寄存器; OPS不能为立即数; 除CF和OF外,对其它标志位无定义。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统乘法指令对乘法指令对CF/OF的影响:的影响:00 乘积的高一半为零乘积的高一半为零11 否则否则MUL指令指令: CF/OF =00 乘积的高一半是低一半的符号扩展乘积的高一半是低一半的符号扩展11 否则否则 IMUL指令指令: CF/OF =例:例:(AL) = A5H(-5B),(BL) = 11H (1) IMUL BL ; (AX) (AL)(BL) ; A511 -5B11=-060B F9F5 ; (AX) = F9F5H CF=OF=1 (2) MUL BL ; (AX) (AL)(BL) ; A511= 0AF5 ; (AX) = 0AF5H CF=OF=1 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.3.4 除运算指令除运算指令1无符号除指令无符号除指令DIV2有符号除指令有符号除指令IDIV进行除法时:16位/8位8位商 32位/16位16位商第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统1无符号除指令无符号除指令DIV语句格式:语句格式:DIV OPS功功能能:字字节节除除法法:(AX)/(OPS) AL(商商)、AH(余余数)数)字除法:(字除法:(DX、AX)/(OPS) AX(商)、商)、DX(余数)余数)例:例:写出实现无符号数写出实现无符号数0400H/0B4H运算的程序段。运算的程序段。MOV AX,0400H ;(;(AX)=0400HMOV BL,0B4H;(;(BL)=0B4HDIVBL ;商(商(AL)=05H,余数(余数(AH)=7CH 注:注:若除数为零或若除数为零或AL中商大于中商大于0FFH(或或AX中商大于中商大于 0FFFFH),则,则CPU产生一个产生一个类型类型0的内部中断。的内部中断。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统2有符号除指令有符号除指令IDIV语句格式:语句格式:IDIV OPS功能:字节除法:(功能:字节除法:(AX)/(OPS) AL(商)、商)、AH(余数)余数)字除法:(字除法:(DX,AX)/(OPS) AX (商)、商)、DX(余数)余数)如如除除数数为为0,或或字字节节除除法法时时AL寄寄存存器器中中的的商商超超出出-128+127的的范范围围,或或字字除除法法时时AX寄寄存存器器中中的的商商超超出出-32768+32767的的范范围围,则则CPU产产生一个生一个类型类型0的内部中断。的内部中断。例:例:写出实现有符号数写出实现有符号数0400H /0B4H运算的程序段。运算的程序段。MOV AX,0400H ;(;(AX)=0400HMOV BX,0B4H;(;(BX)=0B4HIDIV BX ;(;(AL)=0F3H,(,(AH)=24H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统注意注意: : 对于对于DIV/IDIV指令指令 AX(DX,AX)为隐含的为隐含的被除数被除数寄存器。寄存器。 AL(AX)为隐含的为隐含的商商寄存器。寄存器。 AH(DX)为隐含的为隐含的余余数寄存器。数寄存器。 OPS不能为立即数。不能为立即数。 对所有条件标志位均对所有条件标志位均无定义无定义。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统除除法法运运算算要要求求被被除除数数字字长长是是除除数数字字长长的的两两倍倍,若若不不满满足足则则需需对被除数进行扩展,否否则则产生错误;产生错误;对对于于无无符符号号数数除除法法扩扩展展,只只需需将将AH或或DX清零即可;清零即可;对对有有符符号号数数而而言言,则则是是符符号号位位的的扩扩展展。可可使用下面介绍的符号扩展指令使用下面介绍的符号扩展指令CBW和和CWD。关于除法操作中的字长扩展问题关于除法操作中的字长扩展问题第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.3.5 符号扩展指令符号扩展指令 1字节转换成字指令字节转换成字指令CBW2将字转换成双字指令将字转换成双字指令CWD第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统1字节转换成字指令字节转换成字指令CBW语句格式:语句格式:CBW功能:将功能:将AL中的符号位数据扩展至中的符号位数据扩展至AH。例:例:将字节数据扩展成字数据。将字节数据扩展成字数据。MOV AL,0A5H ;(;(AL)=0A5HCBW ;(;(AX)=0FFA5HADD AL,70H ;(;(AL)=25HCBW ;(;(AX)=0025H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统2将字转换成双字指令将字转换成双字指令CWD语句格式:语句格式:CWD功能:将功能:将AX中的符号位数据扩展至中的符号位数据扩展至DX 。例:例:将字数据扩展成双字数据。将字数据扩展成双字数据。MOV DX, 0 ;(DX)=0MOV AX, 0FFABH ;(AX)=0FFABHCWD ;(;(DX)=0FFFFH (AX)=0FFABH第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例例: 写出写出34H25H的程序段。的程序段。MOV AL,34H MOV BL,25H CBW ; AL的符号扩展到的符号扩展到AH IDIV BL ; 0034H25H,结果为结果为 ; (AH)=0FH, (AL)=01H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.3.6 十进制调整指令十进制调整指令1压缩压缩BCD码调整指令码调整指令2非压缩非压缩BCD码调整指令码调整指令BCD码本质上是十进制数,即应遵循码本质上是十进制数,即应遵循逢十逢十进一进一的规则。而计算机是按二进制(十六的规则。而计算机是按二进制(十六进制)进行运算,并未按十进制规则进行进制)进行运算,并未按十进制规则进行运算。运算。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统(1)压缩压缩BCD码加法调整码加法调整DAA两个压缩两个压缩BCD码相加结果在码相加结果在AL中,通过中,通过DAA调调整得到一个正确的压缩整得到一个正确的压缩BCD码码.指令操作指令操作(调整方法调整方法):若若AL的低的低4位位9 或或 AF=1 则则(AL)(AL)+6,AF1若若AL的高的高4位位9 或或 CF=1 则则(AL)(AL)+60H,CF1 只对只对AL的内容进行调整,对的内容进行调整,对AH无影响;无影响; DAA指令应紧跟在指令应紧跟在ADD或或ADC指令之后。指令之后。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例:例: 0100 1000 480100 1000 48H H MOV ALMOV AL,48H 48H + 0111 0100+ 0111 0100 74H74H MOV BLMOV BL,74H 1011 1100 74H 1011 1100 BCHBCH ADD AL ADD AL,BL BL + 0110 0110+ 0110 0110 66H66H DAA DAA 1 1 0010 0010 0010 0010 1 1 22H 22H ( (进位进位) ) ( (进位进位) ) 执行执行ADD后,后,(AL)=BCH,高高4位低位低4位均大于位均大于9,故,故DAA指令执指令执行加行加66H调整,最后结果为:调整,最后结果为: (AL)=22H, CF=1, AF=1不正确的和第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统(2)压缩压缩BCD码减法的十进制调正指令码减法的十进制调正指令DAS对AL中由两个压缩BCD码相减的结果进行调整。调整操作为:若AL的低4位9 或 AF=1,则: AL(AL)-6, 且AF1若AL的高4位9 或 CF=1,则: AL(AL)-60H,且CF1 只对只对AL的内容进行调整,对的内容进行调整,对AH无影响;无影响; DAS指令要求跟在减法指令之后。指令要求跟在减法指令之后。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统2非压缩非压缩BCD码调整指令码调整指令(1)加法的非压缩BCD码调整指令AAA(2)减法的非压缩BCD码调整指令AAS(3)乘法的非压缩BCD码调整指令AAM(4)除法的非压缩BCD码调整指令AAD第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统(1)加法的非压缩)加法的非压缩BCD码调整指令码调整指令AAA语句格式:语句格式:AAA 功能:功能:如果如果AL的低的低4位大于位大于9 或或(AF)=1,则:则: (AL)=(AL)+6 (AH)=(AH)+1 (AF)=(CF)=1 且且AL高高4位清零。位清零。否则:否则:(CF)=(AF)=0 AL高高4位清零。位清零。 AAA指令只影响AF和CF,其余标志无定义。AAA指令应紧跟在ADD或ADC指令之后。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例:计算计算8 89 9 0000 1000 0000 1000 +0000 1001 +0000 1001 000 0001 1 0001 0001 1111 结果应为结果应为1717,而计算机相加为,而计算机相加为1111,原因在于运算过原因在于运算过程中,如遇到低程中,如遇到低4 4位往高位往高4 4位产生进位时(此时位产生进位时(此时AF=1AF=1)是按逢十六进一的规则,但是按逢十六进一的规则,但BCDBCD码要求逢十进码要求逢十进一,因此只要产生进位,个位就会少一,因此只要产生进位,个位就会少6 6,这就要进行,这就要进行加加6 6调正。调正。这个1代表了16,而实际上仅应为10,即多进了6。 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统(2)非压缩非压缩BCD码减法的十进制调正指令码减法的十进制调正指令AAS 对对AL中由两个非压缩的中由两个非压缩的BCD码相减的结果进行码相减的结果进行调整。调整操作为:调整。调整操作为:若若AL的低的低4位位9 或或 AF=1,则:则: AL(AL)-6,AH(AH)-1,AF1 AL(AL) & 0FH CFAF否则:否则:AL(AL) & 0FH第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统举例:举例:16-8=?16-8=? MOV AX,0106H MOV AX,0106H 0000 0110 0000 0110 0606 MOV BL,08H MOV BL,08H - 0000 1000- 0000 1000 - 08 - 08 SUB AL,BL 1111 1110 FE SUB AL,BL 1111 1110 FE AAS AAS - 0000 0110- 0000 0110 - 06- 06 1111 1000 F81111 1000 F8 0000 11110000 1111 0F0F 0000 1000 0000 1000 0808结果为:结果为:(AL)=08H,(AH)=0,CF=AF=1第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统(3)乘法的非压缩)乘法的非压缩BCD码调整指令码调整指令AAM语句格式:语句格式:AAM 功功能能:被被调调整整的的乘乘积积在在AX中中,对对AL按按10取取模模,则:则: (AL)0AHAH(商):商):AL(余数)余数)其中其中AH为商,为商,AL为余数,标志位为余数,标志位AF、CF、OF、PF、SF、ZF受影响。受影响。 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例:例:按十进制乘法计算按十进制乘法计算78=?程序段如下:程序段如下:MOV AL,07H;(AL)=07HMOV CL,08H;(CL)=08HMUL CL;(AX)=0038HAAM;(AH)=05H,(AL)=06H 所得结果为非压缩的所得结果为非压缩的BCD码。码。又例:又例:把把3AH转换成等值的十进制数。转换成等值的十进制数。 MOV AL,3AH ;58BCD AAM ;(AH)=05H,(AL)=08H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统(4)除法的非压缩)除法的非压缩BCD码调整指令码调整指令AAD语句格式:语句格式:AAD 功能:除法运算前,先调整被除数功能:除法运算前,先调整被除数AX内容,使:内容,使: (AL)=(AL)+(AH) 0AH (AH)=0即把非压缩型十进制数变成二进制数。即把非压缩型十进制数变成二进制数。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例:例:按十进制除法计算按十进制除法计算557=? 程序段如下:程序段如下:MOV AX, 0505H;(AX)=55BCDMOV CL, 07H;(CL)= 7AAD;(AX)=0037H DIVCL;(AH)=6, (AL)=7 所得结果为非压缩的所得结果为非压缩的BCD码(商码(商7余余6)。)。又例:又例:把把73转换成等值的二进制数。转换成等值的二进制数。 MOV AX, 0703H ;(AX)= 73BCD AAD ;(AX)= 0049H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.4 位操作类指令位操作类指令3.4.1 逻辑运算指令逻辑运算指令3.4.2 移位指令移位指令 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.4.1 逻辑运算指令逻辑运算指令1求反指令求反指令NOT2逻辑乘指令逻辑乘指令AND3测试指令测试指令TEST4逻辑加指令逻辑加指令OR5按位加指令按位加指令XOR第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统1求反指令求反指令NOT语句格式:语句格式:NOT OPD功功能能:将将目目的的地地址址中中的的内内容容逐逐位位取取反反后后送送入目的地址。入目的地址。即(即(OPD)OPD 例:例:逻辑非运算。逻辑非运算。MOVAX,878AH;(AX)=878AHNOT AX, ;(AX)=7875H对标志位无影响!对标志位无影响!第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统2逻辑乘指令逻辑乘指令AND逻辑逻辑“与与”语句格式:语句格式:AND OPD, OPS功功能能:将将目目的的操操作作数数和和源源操操作作数数进进行行逻逻辑辑乘乘运运算算,结结果果存目的地址。存目的地址。即(即(OPD)(OPS)OPD。该该指指令令用用于于清清除除目目的的操操作作数数中中与与源源操操作作数数置置0的的对对应应位位。说说 明明 : 逻逻 辑辑 乘乘 的的 运运 算算 法法 则则 为为 : 11=1, 10=0,01=0,00=0例:例:将将AL中第中第3位和第位和第7位清零。位清零。 MOVAL,0FFH AND AL,77H 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3测试指令测试指令TEST语句格式:语句格式:TEST OPD,OPS功功能能:源源地地址址和和目目的的地地址址的的内内容容执执行行按按位位的的逻逻辑辑乘乘运运算,结果不送入目的地址,但影响算,结果不送入目的地址,但影响标志寄存器标志寄存器。即(即(OPD)(OPS)。)。例:例:测试测试AX中的第中的第12位是否为位是否为0,不为,不为0则转则转L。TEST AX,1000HJNEL 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统4逻辑加指令逻辑加指令OR逻辑逻辑“或或”语句格式:语句格式:OR OPD,OPS功功能能:将将目目的的操操作作数数和和源源操操作作数数进进行行逻逻辑辑加加运运算算,结结果果存存目的地址。目的地址。即(即(OPD)(OPS)OPD。说说明明:逻逻辑辑加加的的运运算算法法则则为为:11=1,10=1,01=1,00=0。例:例:把把AL中的非压缩中的非压缩BCD码变成相应十进制数的码变成相应十进制数的ASCII码。码。 OR AL, 30H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例:把把AH和和AL中的非压缩中的非压缩BCD码组合成压码组合成压 缩的缩的BCD码码, 放到放到AL中。中。 MOV CL, 4 SHL AH, CL OR AL, AH例:把AL的第的第5位置为位置为1 OR AL, 00100000B第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统5按位加指令按位加指令XOR逻辑逻辑“异或异或”语句格式:语句格式: XOR OPD,OPS功功能能:目目的的操操作作数数与与源源操操作作数数做做按按位位加加运运算算,结结果果送送入入目目的地址。的地址。即(即(OPD) (OPS) OPD。说说明明:按按位位加加的的运运算算法法则则为为;1 1=0,1 0=1,0 1=1,0 0=0。例:例:把把AX寄存器清零。寄存器清零。 例:例: 把把DH的的bit4,3变反变反 MOV AX,0 XOR DH,18H XOR AX,AX AND AX,0 SUB AX,AX 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.4.2 移位指令移位指令 移移位位指指令令包包括括算算术术移移位位指指令令、逻逻辑辑移移位位指指令令和和循循环环移移位位指指令令,分分别别进进行行左左移移和和右右移移操操作作。这这些指令均有统一的语句格式:些指令均有统一的语句格式: 操作码操作码 OPD,1 操作符操作符 OPD,CL其其功功能能为为将将目目的的操操作作数数的的所所有有位位按按操操作作符符规规定定的的方方式式移移动动1位位或或按按寄寄存存器器CL规规定定的的次次数数(0255)移移动动,结结果果送送入入目目的的地地址址。目目的的操操作作数数是是8位(或位(或16位)的位)的寄存器数据寄存器数据或或存储器数据存储器数据。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统1算术左移和逻辑左移指令算术左移和逻辑左移指令SAL(SHL)语句格式:语句格式:SAL OPD,1 或或 SHL OPD,1 SAL OPD,CL 或或 SHL OPD,CL功功能能:将将(OPD)向向左左移移动动CL指指定定的的次次数数,最最低低位位补补入入相相应应的的0,CF的的内内容容为为最最后后移移入入位位的的值。值。最低位最高位CF0第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统2算术右移指令算术右移指令SAR语句格式:语句格式:SAR OPD,1或或SAR OPD,CLCF功能:将(功能:将(OPD)向右移动向右移动CL指定的次数指定的次数且且最高位保持不变最高位保持不变;CF的内容为最后移入位的的内容为最后移入位的值。值。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例:例:算术右移运算。算术右移运算。MOVBH,0F4H ;(BH)=0F4H=11110100BMOVCL, 2 ;(CL)=2SAR BH, CL ;(BH)=0FDH=11111101B ;(CF)=0该该例例语语句句“SAR BH,CL”实实际际上上完完成成了了(BH)BH的的运运算算,所所以以,用用SAR指指令令可可以以实实现现对对有有符符号号数数除除2n的的运运算算(n为为移移位位次次数)。数)。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3逻辑右移指令逻辑右移指令SHR语句格式:语句格式:SHR OPD,1或或SHR OPD,CL功功能能:将将(OPD)向向右右移移动动CL规规定定的的次次数数,最最高高位位补补入入相相应应个个数数的的0,CF的的内内容容为为最最后后移移入入位的值。位的值。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统算术移位算术移位把操作数看做有符号数;把操作数看做有符号数;逻辑移位逻辑移位把操作数看做无符号数。把操作数看做无符号数。移位位数放在移位位数放在CL寄存器中,如果只移寄存器中,如果只移1位位,也可以直接写在指也可以直接写在指令中。例如:令中。例如: MOV CL,4 SHR AL,CL ;AL中的内容右移中的内容右移4位影响位影响C,P,S,Z,O 标志。标志。结果未溢出时:结果未溢出时: 左移左移1位位操作数操作数*2 右移右移1位位操作数操作数/2第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例:例:把把AL中的数中的数x乘乘10因为因为10=8+2=23+21,所以可用移位实现乘,所以可用移位实现乘10操作。操作。程序如下:程序如下:SAL AL,1 ; 2xMOV AH,AL SAL AL,1 ; 4x SAL AL,1 ; 8x ADD AL,AH ; 8x+2x = 10x第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统4循环左移指令循环左移指令ROL语句格式:语句格式:ROL OPD,1 或或 ROL LPD,CL功功能能:将将目目的的操操作作数数的的最最高高位位与与最最低低位位连连成成一一个个环环,将将环环中中的的所所有有位位一一起起向向左左移移动动CL规规定定的的次数。次数。CF的内容为最后移入位的值。的内容为最后移入位的值。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统5循环右移指令循环右移指令ROR语句格式:语句格式: ROR OPD,1 或或 ROR OPD,CL功功能能:将将目目的的操操作作数数的的最最高高位位与与最最低低位位连连成成一一个个环环,将将环环中中的的所所有有位位一一起起向向右右移移动动CL规规定定的的次数,次数,CF的内容为最后移入位的值。的内容为最后移入位的值。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统6带进位的循环左移指令带进位的循环左移指令RCL语句格式:语句格式: RCL OPD, 1 或或 RCL OPD,CL功能:将目的操作数连同功能:将目的操作数连同CF标志一起向左循环标志一起向左循环移动移动CL规定的次数。规定的次数。 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统7带进位的循环右移指令带进位的循环右移指令RCR语句格式:语句格式:RCR OPD,1或或RCR OD,CL功能:将目的操作数连同功能:将目的操作数连同CF标志一起向右循环标志一起向右循环移动所规定的次数。移动所规定的次数。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统循环移位举例循环移位举例例例1:将:将AL的高的高4位与低位与低4位互换。位互换。 MOV CL,4 ROL AL,CL例例2: MOV CL, 8 ROR BX, CL ROR AX, CL MOV BH, AH MOV AH, 0问题:此程序段的功能是什么?将将(AX,BX)组组成成的的32位位数数右右移移8位位,最最高高8位填位填0。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.5 串操作类指令串操作类指令串操作指令 :数据传送类指令每次只能传送一个数据,若要传送大批数据就需要重复编程,这样就浪费了大量的时间和空间。为此8086提供了一组处理主存中连续存放数据串的指令,这就是串操作指令。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.5 串操作指令串操作指令串:串:顺序放在顺序放在内存中内存中的一组的一组相同类型相同类型的数据;的数据;串操作:串操作:对串中的元素进行相同的操作;对串中的元素进行相同的操作;串操作的串操作的寻址方式:寻址方式: 源操作数指针源操作数指针DS:SI(DS可超越)可超越) 目的操作数指针目的操作数指针ES:DI每次串操作后:每次串操作后:串操作指令自动修改串操作指令自动修改SI和和DI字节字节1,字,字2。DF标志决定标志决定。(。(注意:注意:退出串操作后,指针指向最后操退出串操作后,指针指向最后操作的元素的下一个元素);作的元素的下一个元素);可完成两个存储单元之间的传送和比较操作(可完成两个存储单元之间的传送和比较操作(也仅也仅是串指令可以是串指令可以););第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统串指令使用的一般方法设置源串地址设置源串地址设置目标串地址设置目标串地址设置串长度设置串长度设置操作方向设置操作方向DF串指令串指令MOV SI, 源串首地址源串首地址(或(或LEA SI, 源串)源串)MOV DI, 目的串首地址目的串首地址(或(或LEA DI, 目的串)目的串)MOV CX, 串长度串长度CLD(或(或STD)“串指令串指令”第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统1传送指令传送指令MOVS语句格式:语句格式: MOVSB字节串传送字节串传送 MOVSW字串传送字串传送功功能能:将将以以SI为为指指针针的的源源串串中中的的一一个个字字节节(或或字字)存存储储单单元元中中的的数数据据传传送送至至以以DI为为指指针针的的目目的的地地址址中中去去,并并自自动修改指针,使之指向下一个字节(或字)存储单元。动修改指针,使之指向下一个字节(或字)存储单元。即:即:(DS:SI) ES:DI。 当当DF=0时,(时,(SI)和(和(DI)增量。增量。 当当DF=1时,(时,(SI)和(和(DI)减量。减量。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统2串比较指令串比较指令CMPS 语句格式:语句格式: CMPSB字节串比较字节串比较 CMPSW字串比较字串比较功功能能:将将SI所所指指的的源源串串中中的的一一个个字字节节(或或字字)存存储储单单元元中中的的数数据据与与DI所所指指的的目目的的串串中中的的一一个个字字节节(或或字字)存存储储单单元元中中的的数数据据相相减减,并并根根据据相相减减的的结结果果设设置置标标志志,但但结结果并不保存。果并不保存。即:即:(SI)()(DI)。)。 修改串指针,使之指向串中的下一个元素。修改串指针,使之指向串中的下一个元素。 当当DF=0时,(时,(SI)和(和(DI)增量。当增量。当DF=1时,时, (SI)和(和(DI)减量。减量。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3串搜索指令串搜索指令SCAS语句格式:语句格式: SCASB字节串搜索字节串搜索 SCASW字串搜索字串搜索功功能能:AL(字字节节)或或 AX(字字)中中的的内内容容与与DI所所指指的的目目的的串串中中的的一一个个字字节节(或或字字)存存储储单单元元中中的的数数据据相相减减,根根据相减结果设置标志位,结果不保存,据相减结果设置标志位,结果不保存,即:即: 字节操作:(字节操作:(AL)()(DI),), 字操作:(字操作:(AX)()(DI)。)。 修改指针使之指向串中的下一个元素。修改指针使之指向串中的下一个元素。 当当DF=0时,(时,(DI)增量。增量。 当当DF=1时,(时,(DI)减量。减量。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统4从源串中取数指令从源串中取数指令LODS语句格式:语句格式: LODSB从字节串中取数从字节串中取数 LODSW从字串中取数从字串中取数功功能能:将将SI所所指指的的源源串串中中的的一一个个字字节节(或或字字)存存储储单单元元中的数据取出来送入中的数据取出来送入AL(或或AX)中。中。即:即: 字节操作:(字节操作:(SI)AL, 字操作:(字操作:(SI)AX。 修改指针修改指针SI,使它指向串中的下一个元素。使它指向串中的下一个元素。 当当DF=0时,(时,(SI)增量。增量。 当当DF=1时,(时,(SI)减量。减量。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统5往目的串中存数指令往目的串中存数指令STOS语句格式:语句格式: STOSB往字节串中存数往字节串中存数 STOSW往字串中存数往字串中存数功功能能:将将AL或或AX中中的的数数据据送送入入DI所所指指的的目目的的串串中中的的字字节(或字)存储单元中。节(或字)存储单元中。即:即: 字节操作:(字节操作:(AL)DI, 字操作:(字操作:(AX)DI。 修改指针修改指针DI,使之指向串中的下一个元素。使之指向串中的下一个元素。 当当DF=0时,(时,(DI)增量。增量。 当当DF=1时,(时,(DI)减量。减量。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统重复前缀重复前缀有的串操作指令前面可加上重复前缀重复前缀REP。当使用REP前缀时,该指令重复执行,重复执行次数由CX决定(带有REP前缀的串操作指令每执行一次,CX自动减1)。重复前缀重复前缀包括:包括:REP CX0 时重复执行时重复执行REPE/REPZ CX0 且且 ZF=1时重复执行时重复执行REPNE/REPNZ CX0 且且 ZF=0时重复执行时重复执行第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统串传送指令使用举例串传送指令使用举例例例1 1:用串传送指令实现用串传送指令实现200个字节的数据传送:个字节的数据传送: LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例例2:把从把从A000H开始的开始的2KB内存单元清零。内存单元清零。程序段如下:程序段如下: MOV DI,0A000H MOV AX,0 MOV CX,1024 CLD REP STOSW 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例3:把1000H开始的100个存储单元填入 ASCII码2AH(即*号)。程序段如下: MOV DI, 1000H ; 首地址 MOV AL, 2AH ;* MOV CX, 100 ; 重复执行100次 CLD ; 增量修改DI REP STOSB第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例例4:用串操作指令代替如下指令:用串操作指令代替如下指令:1) MOV AL,SI INC SI2) MOV ES:DI,AX INC DI INC DI 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.6 控制转移类指令控制转移类指令3.6.1 条件转移指令条件转移指令3.6.2 无条件转移指令无条件转移指令3.6.3 循环指令循环指令 3.6.4 子程序调用指令子程序调用指令3.6.5 中断指令中断指令第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.6.1 条件转移指令条件转移指令1单个标志位单个标志位条件转移指令条件转移指令2无符号数无符号数条件转移指令条件转移指令3. 有符号数有符号数条件转移指令条件转移指令 它们都有通用的语句格式和功能。它们都有通用的语句格式和功能。语句格式:语句格式: 标号标号: : 操作符操作符 标号标号功功能能:如如果果条条件件满满足足,则则(IP)位位移移量量IP。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统1 1单个标志位条单个标志位条件转移指令件转移指令第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统2 2无符号数条件转移指令无符号数条件转移指令第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例:例:比较无符号数大小,将较大的数存放比较无符号数大小,将较大的数存放AX寄存器。寄存器。CMP AX, BX ;(;(AX)()(BX)JNBNEXT ;若若AX=BX,转移到转移到NEXTXCHGAX,BX ;若若AX=BX,转移到转移到 ; NEXTXCHG AX,BX ;若若AXBX,交换交换NEXT:第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统MOVBX, 12FAHMOVCH, 4 ; CH做循环计数器做循环计数器ROT: MOVCL, 4; CL做移位计数器做移位计数器 ROLBX, CL; 将最高将最高4位移到低位移到低4位位 MOVAL, BL ANDAL, 0FH; 取出低取出低4位位 ADDAL, 30H; 转换为转换为ASCII码码 CMPAL, 39H; 与与 9 比较比较 JBE DISP; 若若(AL)9, 则转显示则转显示 ADDAL, 07H; 若若(AL)9, 再加再加7转为转为A-FDISP: MOVDL, AL; (DL)字符字符 MOVAH, 2 INT21H; 显示输出显示输出 DECCH; 4个十六进制数显示完否个十六进制数显示完否? JNZROT; 没有没有, 循环循环 MOVDL, 48H; H MOVAH, 2 INT21H; 最后显示最后显示H例:例:以十六进制数形式显示以十六进制数形式显示BX中的内容。中的内容。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.6.2 无条件转移指令无条件转移指令第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统无条件转移指令无条件转移指令 JMP本指令无条件转移到指定的目标地址,以执行从该地址开始的程序段。根据设置CS、IP的方法,JMP指令分成4种情况。 段内段内直接转移:直接转移: JMP disp 指令中给出的指令中给出的8/16位的位移量位的位移量加到加到IP。CS保持不变。保持不变。 段内段内间接转移:间接转移: JMP reg/mem reg/mem中的中的16位偏移地址位偏移地址送送IP。CS保持不变。保持不变。 段间段间直接转移直接转移 JMP segment:offset 指令中给出的指令中给出的16位的段和位的段和16位的偏移地址位的偏移地址送到送到CS和和IP。 段间段间间接转移间接转移 JMP mem32 mem32中的中的16位的段和位的段和16位的偏移地址位的偏移地址送到送到CS和和IP。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统转移的目标地址由指令直接给出。指令中给出的转移的目标地址由指令直接给出。指令中给出的目标地址实际上是一个目标地址实际上是一个相对于相对于IP的位移量的位移量: 位移量位移量 转移范围转移范围 汇编语言中格式汇编语言中格式 8位位 -128+127 JMP SHORT OPRD 16位位 -32768+32767 JMP NEAR PTR OPRD例:例:JMP0120H ;直接转向直接转向0120H JMPSHORT LP ;转向转向LP JMPNEAR PTR BBB;转向转向BBB由于是由于是段内段内转移转移,故转移后故转移后CS内容保持不变内容保持不变 段内直接转移段内直接转移第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统段内间接转移转移的目标地址由转移的目标地址由寄存器或或存储单元的内容给出。的内容给出。 例1:JMP SI若若(SI)=1200H,则指令执行后,则指令执行后,(IP)=1200H,于是,于是转向代码段的偏移地址转向代码段的偏移地址1200H处开始执行。处开始执行。注意:目标地址以段内偏移的形式给出,而不是相对于注意:目标地址以段内偏移的形式给出,而不是相对于IP的的位移量,所以它是一个位移量,所以它是一个16位的操作数。位的操作数。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例2:JMP BX+DI设指令执行前设指令执行前: (DS)=3000H,(BX)=1300H, (DI)=1200H,(32500H)=2350H; 则指令执行后则指令执行后:(IP)=2350H在汇编语言中,段内间接寻址通常写成:在汇编语言中,段内间接寻址通常写成:JMP WORD PTRBX+DI表示所取得的目标地址是一个字。表示所取得的目标地址是一个字。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统段间直接转移在指令中直接给出要转移到的目的段地址和偏移地在指令中直接给出要转移到的目的段地址和偏移地址。址。 例:JMP2000H:1000H执行时执行时,(IP)1000H,(CS)2000H注:注:直接地址为符号地址时,段间直接转移指令中直接地址为符号地址时,段间直接转移指令中的符号地址前应加操作符的符号地址前应加操作符FAR PTR。 例:JMP FAR PTR far_label其中的其中的far_label为远类型的标号。为远类型的标号。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统转移的目的地址转移的目的地址(段和偏移段和偏移)在两个相邻的在两个相邻的字存储单元中。例如:中。例如:JMP DWORD PTRSI设指令执行前设指令执行前:(DS)=4000H,(SI)=1212H, (41212H)=1000H,(41214H)=4A00H则指令执行后则指令执行后:(IP)=1000H,(CS)=4A00H于是转到于是转到4B000H处开始执行指令。处开始执行指令。例中的例中的DWORD PTR表示转移地址是一个双字。表示转移地址是一个双字。段间间接转移段间间接转移第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.6.3 循环指令循环指令 1循环指令循环指令LOOP2相等相等/为零循环指令为零循环指令LOOPE3不相等不相等/不为零循环指令不为零循环指令LOOPNE 4CX为零转移指令为零转移指令JCXZ第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统(1) LOOP格式:LOOP label操作:(CX)-1CX; 若若(CX)0,则转至,则转至label处执行处执行; 否则退出循环,执行否则退出循环,执行LOOP后面的指令。后面的指令。 注:LOOP指令与下面的指令段等价: DEC CX JNZ label第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统(2)LOOPZ/LOOPE格式:LOOPZ label操作:(CX)-1CX; 若若(CX)0 且且 ZF=1,则转至则转至label处执行处执行; 否则退出循环,执行否则退出循环,执行LOOP后面的指令。后面的指令。(3)LOOPNZ/LOOPNE格式:LOOPNZ label操作:(CX)-1CX; 若若(CX)0 且且 ZF=0,则转至则转至label处执行处执行; 否则退出循环,执行否则退出循环,执行LOOP后面的指令。后面的指令。第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统(4) CX为零转移指令为零转移指令JCXZ语句格式:语句格式: JCXZ 标号标号功功能能:(CX)=0,则则程程序序转转移移(循循环);否则,顺序执行。环);否则,顺序执行。 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例例1:给给1A000H开始的开始的256个内存单元均减去个内存单元均减去1,若发现某个,若发现某个单元减为单元减为0则立即退出循环,其后的单元不再减则立即退出循环,其后的单元不再减1。程序段如下程序段如下:(逻辑地址为(逻辑地址为1A00:0000H) MOV AX, 1A00H MOV DS, AX ; 1A00H段段 MOV DI, -1 MOV CX, 256 GOON: INC DI DEC BYTE PTR DI LOOPNZ GOON 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例2:在在8000H开开始始的的长长度度为为1000字字节节的的字字符符串串中中查查找找S,若若找找到到,把把其其偏偏移移地地址址记记录录在在ADDR中中,否否则则ADDR单单元元置置为为0FFFFH。 MOV DI, 8000H MOV CX, 1000 MOV AL, S MOV ADDR, 0FFFFH GOON: SCASB LOOPNZ GOON JNZ DONE DEC DI MOV ADDR, DI DONE: HLT 请同学们写出程序段请同学们写出程序段第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.6.4 过程调用和返回指令过程调用和返回指令过程过程(子程序子程序) 一段具有特定功能的,供其它程序调用的公用程序。一段具有特定功能的,供其它程序调用的公用程序。特点特点调用子程序时,IP(CS)的内容被压入堆栈栈顶。从子程序返回时,栈顶的内容又被弹出到IP(CS)。子程序执行结束后一般均要返回调用程序。一次定义,多次调用;可带参数调用,以完成不同的功能。优点优点 程序代码短,结构清晰,便于编程、调试、修改和阅读。程序代码短,结构清晰,便于编程、调试、修改和阅读。 两条相关指令:两条相关指令: 子程序调用指令子程序调用指令 CALL 子程序返回指令子程序返回指令 RET第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统一般格式:CALL sub ;sub为子程序的入口根据子程序入口的寻址方式,子程序调用有根据子程序入口的寻址方式,子程序调用有四类四类。段内直接调用子程序的偏移地址直接由子程序的偏移地址直接由CALL指令给出。指令给出。 格式:CALL near_proc CALL执行时,它首先将执行时,它首先将IP内容压栈,然后把指令内容压栈,然后把指令中给出的位移量加到中给出的位移量加到IP上。上。注:注:汇编以后的调用地址是相对于汇编以后的调用地址是相对于CALL的下一条的下一条指令的位移量。指令的位移量。例:例:CALL 0120H ;子程序偏移地址由指令给出子程序偏移地址由指令给出(1)调用指令调用指令CALL第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统子程序的偏移地址在寄存器或存储器中。 格式:CALL mem16/reg16CALL执行时,它首先将执行时,它首先将IP内容压栈,然后把指定内容压栈,然后把指定的寄存器的寄存器/存储器的内容送入存储器的内容送入IP。 例:例: CALLBX ;子程序地址由子程序地址由BX给出给出 CALLWORD PTRSI ;子程序地址在存储器中子程序地址在存储器中段内间接调用段内间接调用第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统CALL WORD PTR SI指令的操作图示:指令的操作图示:假定:假定:(DS) = 8000H,(SI) = 1200H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统子程序的段地址和偏移地址直接由CALL指令给出。 格式:CALL far_proc ;far_proc为远过程的地址指令的操作为: CS内容压栈 IP内容压栈 CS段地址 IP偏移地址例:例:CALL 2000H:1000H CALL TIMER ;TIMER为远过程为远过程段间直接调用段间直接调用第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统子程序的段和偏移地址为存储器的连续4个单元中的内容。 格式:CALL mem32指令的操作为: SP(SP)-2 (SP)+1,(SP)(CS) ;CS压栈 CS(mem32+2) SP(SP)-2 (SP)+1,(SP)(IP) ;IP压栈 IP(mem32)例:例:CALL DWORD PTR DI调用地址在调用地址在DI,DI+1,DI+2,DI+3四个存储单元中。四个存储单元中。低字内容为偏移地址,高字内容为段地址低字内容为偏移地址,高字内容为段地址。段间间接调用段间间接调用第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统段间间接调用示意图段间间接调用示意图CALL DWORDCALL DWORD PTRDIPTRDI第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统例:例:下面的程序执行后,下面的程序执行后,(AX)=? (DX)=? CS:2000H MOV AX, 2012H 2003H MOV CX, 200CH 2006H PUSH CX 2007H CALL 4000H 200AH ADD AX, BX 200CH ADD AX, DX 200EH HLT CS:4000H MOV BX, 200AH POP DX RET第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统段内返回指令返回指令RET的操作为:的操作为: 恢复子程序执行前恢复子程序执行前IP的内容。的内容。段间返回指令返回指令RET的操作为:的操作为: 恢复子程序执行前恢复子程序执行前IP和和CS的内容。的内容。 另有一种带立即数的返回指令 “ RET n ”,其中n为偶数,表示从栈顶弹出地址后另外丢弃的字节数。例:RET 4 ;返回后再丢弃栈顶的4个字节(2)(2)返回指令返回指令RETRET第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.6.5中断指令中断指令8086/8088 CPU在程序中允许安排一条中断指令来在程序中允许安排一条中断指令来引起一个中断过程,这种中断叫引起一个中断过程,这种中断叫内部中断,内部中断,或叫或叫软中断软中断。被中断的指令地址处称为。被中断的指令地址处称为“断点断点”。有。有关中断的详细情况将在以后讨论。关中断的详细情况将在以后讨论。 中断指令共有三条:中断指令共有三条: (1) INT n 执行类型执行类型n的中断服务程序,的中断服务程序,N=0255 (2) INTO 执行溢出中断的中断服务程序执行溢出中断的中断服务程序 (3) IRET 从中断服务程序返回调用程序从中断服务程序返回调用程序第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统(1) INT n格式:格式: INT n说明:说明:n4 = 向量地址向量地址。该向量地址中的内容即为中断服务。该向量地址中的内容即为中断服务程序入口地址程序入口地址(段段:偏移偏移),入口地址也称为,入口地址也称为“中断向量中断向量”。0000 : n4 XXHXXHYYHYYH中断服务程序入中断服务程序入口的偏移地址口的偏移地址(IP)中断服务程序入中断服务程序入口的段地址口的段地址(CS)中断类型码中断类型码n = 0255内存内存中断向量第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统INT指令的操作:指令的操作:将将FLAGS压入堆栈;压入堆栈;将将INT指令下一条指令的地址压栈(即把指令下一条指令的地址压栈(即把CS和和IP的的内容压栈);内容压栈);取中断服务程序入口地址送入取中断服务程序入口地址送入CS和和IP。 INT指令只影响IF和TF, 对其余标志位无影响INT指令可用于调用系统服务程序,如INT 21H第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统INT指令的操作例:指令的操作例:INT 21HIPLIPHCSLCSHSP=1200FLAGSLFLAGSHSP=11FA执行执行INT 21H指令后指令后保护断点保护断点堆栈堆栈执行执行INT 21H指令前指令前第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统INTINT指令的操作例(续):指令的操作例(续): 执行执行INT 21H指令后,指令后, CS=? IP=?因为因为n=21H,所以,所以n4=84H。下图中,下图中,(0:0084H)=2000H:1123H 所以:所以: CS=2000H IP=1123H0000:0084H 23H11H00H20HIP CS0000 : 21H4第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统INTO检查溢出标志检查溢出标志OF,如果如果OF=1,则启动一个类,则启动一个类型型4的中断过程;如果的中断过程;如果OF=0,不做任何操作。不做任何操作。通通常常INTO指指令令安安排排在在有有符符号号数数算算术术运运算算指指令令后后面面。如如IMUL DXINTO ;若溢出,则启动若溢出,则启动INT 4, 否则往下执行否则往下执行MOV RESULT,AXMOV RESULT+2,DX (2)溢出中断)溢出中断INTO第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统用用于于从从中中断断服服务务程程序序返返回回被被中中断断的的程程序序。IRET负负责责恢复断点恢复断点(CS和和IP)和恢复标志寄存器内容。和恢复标志寄存器内容。任任何何中中断断服服务务程程序序不不管管是是外外部部中中断断引引起起的的,还还是是内内部中断引起的,最后都要用部中断引起的,最后都要用IRET返回。返回。IRET指令执行的操作为:指令执行的操作为: 栈顶内容弹出到栈顶内容弹出到IP 栈顶内容弹出到栈顶内容弹出到CS 栈顶内容弹出到栈顶内容弹出到FLAG(3)中断返回指令中断返回指令IRET第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统3.7 处理器控制指令处理器控制指令1.标志操作指令标志操作指令用来设置标志位的状态用来设置标志位的状态 (1)CF设置指令设置指令 CLC 0CF STC 1CF CMC CF变反变反 (2)DF设置指令设置指令 CLD 0DF (串操作的指针移动方向从低到高串操作的指针移动方向从低到高)STD 1DF (串操作的指针移动方向从高到低串操作的指针移动方向从高到低) (3)IF设置指令设置指令CLI 0IF (禁止禁止INTR中断中断)STI 1IF (开放开放INTR中断中断) 第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统2. CPU状态控制指令1空操作指令空操作指令NOP占占3个时钟周期个时钟周期2总线封锁指令总线封锁指令LOCK只能作前缀只能作前缀3暂停指令暂停指令HLTCPU停机停机4交权指令交权指令ESC调用协处理器调用协处理器5等待指令等待指令WAITTEST信号有效结束信号有效结束第第3 3章章-1 -1 寻址方式和指令系统寻址方式和指令系统作业2-1;2-2;2-5;2-6;2-10;2-11;2-12;2-14;
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号