




已阅读5页,还剩141页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
IBM-PC汇编语言程序设计 浙江财经学院信息学院 第3章 80x86指令系统和寻址方式 教学要求: 1. 掌握指令系统的基本概念:指令格式、寻址方 式、指令类型;掌握8086/8088指令系统中,各指 令的格式、功能和注意事项。 2. 了解其他的寻址方式和指令类型。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 相关概念 一、什么是指令系统? 计算机的指令系统就是指该计算机能够执行的 全部指令的集合。 每种计算机都有它支持的指令集合。 16位8086指令系统是整个Intel 80x86 系列微处 理器指令系统的基础。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 二、指令格式二、指令格式 指令由操作码和操作数两部分组成。 操作码操作码说明计算机要执行哪种操作,如传送、运算、 移位、跳转等操作,它是指令中不可缺少的组成部分。 操作数操作数是指令执行的参与者,即各种操作的对象。 有些指令不需要操作数,通常的指令都有一个或两个 操作数,也有个别指令有3个甚至4个操作数,通常成为一 地址指令、二地址指令、三 操作码操作数 操作数 IBM-PC汇编语言程序设计 浙江财经学院信息学院 三、学习指令的注意事项 指令的功能指令的功能该指令能够实现何种操作。通常指令助 记符就是指令功能的英文单词或其缩写形式。 指令支持的寻址方式指令支持的寻址方式该指令中的操作数可以采用何 种寻址方式。 指令对标志的影响指令对标志的影响该指令执行后是否对各个标志位 有影响,以及如何影响。 其他方面其他方面该指令其他需要特别注意的地方,如指令 执行时的约定设置、必须预置的参数、隐含使用的寄存器必须预置的参数、隐含使用的寄存器等 。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 3.1 80x86寻址方式 寻址、寻址方式的概念 指令中操作数字段实质上是指出操作数存放于何处。一 般来说,操作数可以跟随在指令操作码之后操作数可以跟随在指令操作码之后,称为立即数; 操作数也可以存放在操作数也可以存放在CPUCPU内部的寄存器中内部的寄存器中,称为寄存器操作 数。绝大多数的操作数存放在内存储器中绝大多数的操作数存放在内存储器中,称为存储器操作 数。指令指定操作数的位置,即给出地址信息,在执行时需 要根据这个地址信息找到需要的操作数。这种寻找操作数的寻找操作数的 过程过程称为寻址,而寻找操作数的方法称为寻址方式。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 指令的助记符格式: 指令助忆符 操作数1 , 操作数2 , 操作数3 ;注释 指令助忆符体现该指令的功能,它对应一条二进制编码的机器对应一条二进制编码的机器 指令指令。指令的操作数个数由该指令确定,可以没有操作数,也可以可以没有操作数,也可以 有一个、二个或三个操作数。有一个、二个或三个操作数。绝大多数指令的操作数要显式的写出 来,但也有指令的操作数是隐含的,不需要在指令中写出。 注:当指令含有操作数,则在书写时必须遵守: v 指令助记符和操作数之间要有分隔符,分隔符可以是若干个空格指令助记符和操作数之间要有分隔符,分隔符可以是若干个空格 或或TABTAB键;键; v 如果指令含有多个操作数,那么,操作数之间要用逗号如果指令含有多个操作数,那么,操作数之间要用逗号“ “,“ “分开分开 。 vv指令后面还可以书写注释内容,不过,要在注释之前书写分号指令后面还可以书写注释内容,不过,要在注释之前书写分号“ “; ” ”。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 3.1.1 与数据有关的寻址方式 以 MOV 指令为例: 立即寻址 MOV AX , 3069H 寄存器寻址 MOV AL , BH 直接寻址 MOV AX , 2000H 寄存器间接寻址 MOV AX , BX 寄存器相对寻址 MOV AX , COUNT SI 基址变址寻址 MOV AX , BP DI 相对基址变址寻址 MOV AX , MASK BX SI IBM-PC汇编语言程序设计 浙江财经学院信息学院 1. 立即寻址方式 定义:操作数作为指令的一部分而直接写在指令中, 这种操作数称为立即数,这种寻址方式也就称为立即数立即数 寻址方式。 汇编格式:n(n为立即操作数,是用用8 8位或位或1616位二进制位二进制 补码表示的有符号数补码表示的有符号数) 功能:操作数存放在存储器,指令下一单元的内容为立 即操作数n。 图形表示: 操作数 n 指令 IBM-PC汇编语言程序设计 浙江财经学院信息学院 【例3.1】MOV AX, 4576H 执行后(AX)=? 该例中源操作数为立即寻址方式,立即数为4576H,存放 在指令的下一单元。 执行:4576HAX 执行后:(AX)=4576H 76H OP 45H DS MOV AX,4576H 指令的存储形式 45 76 AX IBM-PC汇编语言程序设计 浙江财经学院信息学院 2. 寄存器寻址方式 定义:指令所要的操作数已存储在某寄存器中,或把目标指令所要的操作数已存储在某寄存器中,或把目标 操作数存入寄存器操作数存入寄存器。把在指令中指出所使用寄存器(即: 寄存器的助记符)的寻址方式称为寄存器寻址方式。 汇编格式:R 其中R表示寄存器名。 功能:操作数直接存放在寄存器R中。 图形表示: 寄存器 R 指令 操作数 寄存器 IBM-PC汇编语言程序设计 浙江财经学院信息学院 指令中可以引用的寄存器及其符号名称如下: 8位寄存器有:AHAH、ALAL、BHBH、BLBL、CHCH、CLCL、DHDH和和DL DL 等; 16位寄存器:AXAX、BXBX、CXCX、DXDX、SISI、DIDI、SPSP、 、BPBP和段和段 寄存器寄存器等; v 源操作数是寄存器寻址方式 如:ADD VARW, AX MOV VARB, BH等。 其中:VARW和VARB是字和字节类型的内存变量。 v目的操作数是寄存器寻址方式 如:ADD BH, 78h ADD AX, 1234h v源和目的操作数都是寄存器寻址方式 如: MOV AXAX, BXBX MOV DHDH, BLBL等。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 注:由于指令所需的操作数已存储在寄存器中,或由于指令所需的操作数已存储在寄存器中,或 操作的结果存入寄存器,这样,在指令执行过程中操作的结果存入寄存器,这样,在指令执行过程中 ,会减少读,会减少读/ /写存储器单元的次数,所以,使用寄存写存储器单元的次数,所以,使用寄存 器寻址方式的指令具有较快的执行速度器寻址方式的指令具有较快的执行速度。通常情况 下,提倡在编写汇汇编语言程序时,应尽可能地使用 寄存器寻址方式,但也不要把它绝对化。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 【例3.2】下列程序执行后,(AX)=?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX 解释:该程序中MOV指令为数据传送指令操作符,ADD指 令为加法指令操作符,三条指令皆为双操作数指令。第一、 二条指令AX、BX皆为目的操作数地址,为寄存器寻址方式 。第三条指令中,AX为目的操作数地址,BX为源操作数地 址。源地址和目的地址皆为寄存器寻址方式。 执行:1234HAX 5678HBX (AX)+(BX)AX 执行后:(AX)=68ACH,(BX)=5678H IBM-PC汇编语言程序设计 浙江财经学院信息学院 3. 直接寻址方式 定义:指令所要的操作数存放在内存中,在指令中直接给指令所要的操作数存放在内存中,在指令中直接给 出该操作数的有效地址出该操作数的有效地址,这种寻址方式为直接寻址方式。 汇编格式:含有变量的地址表达式含有变量的地址表达式。 功能:指令下一字单元的内容是操作数的偏移地址EA。 图形表示: EA 指令 操作数 存储器 段基地址 IBM-PC汇编语言程序设计 浙江财经学院信息学院 【例3.3】执行指令:MOV BX ,1234H 设(DS)=2000H。 执行后:(AX)=? 图示: 执行:(21234H)BX 执行后:(BX)=5312H IBM-PC汇编语言程序设计 浙江财经学院信息学院 在通常情况下,操作数存放在数据段中,所以,其物理地其物理地 址将由数据段寄存器址将由数据段寄存器DSDS和指令中给出的有效地址直接形成和指令中给出的有效地址直接形成,但 如果使用段超越前缀,那么,操作数可存放在其它段。 例如:MOV ES:1000H, AX 注意:立即寻址方式和直接寻址方式的书写格式不同立即寻址方式和直接寻址方式的书写格式不同,直接寻 址的地址要写在括号“”,“”内。在程序中,直接地址通直接地址通 常用内存变量名来表示常用内存变量名来表示,如:MOV BX, VARW,其中,VARW 是内存字变量。 试比较下列指令中源操作数的寻址方式(VARW是内存字 变量): MOV AX, 1234H MOV AX, 1234H 前者是立即寻址,后者是直接寻址 MOV AX, VARW MOV AX, VARW 两者是等效的,均为直接寻址 IBM-PC汇编语言程序设计 浙江财经学院信息学院 4. 寄存器间接寻址方式 定 义:操作数在存储器中操作数在存储器中,操作数的有效地址用SI、DI 、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄 存器间接寻址方式。 汇编格式:R 功 能:操作数存放在存储器,寄存器R存放操作数的偏移 地址EA。 图形表示: EA 寄存器 操作数 存储器 段基地址 基址或变址寄存器 指令 IBM-PC汇编语言程序设计 浙江财经学院信息学院 【例3.4】假设有指令:MOV BX, DI,在执行时,(DS) =1000H,(DI)=2345H,存储单元12345H的内容是4354H。问执 行指令后,BX的值是什么? 解:寄存器DI的值不是操作数,而是操作数的地址。 该操作数的物理地址应由DS和DI的值形成,即: PA=PA=(DSDS)* *16+DI=1000H*16+2345H=12345H 16+DI=1000H*16+2345H=12345H。 所以,该指令的执行效果是: 把从物理地址为12345H开始的 一个字的值传送给BX。 OP CS DS 54H 43H 10000H 12345H DS:1000H DI:2345H 12345H 43 54 BX IBM-PC汇编语言程序设计 浙江财经学院信息学院 在不使用段超越前缀的情况下,有下列规定: v若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存 器为DS; v若有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆 栈段)。 该寻址方式物理地址的计算方法如下: BX BX 物理地址物理地址PA=16DS + SI PA=16DS + SI DI DI 或 物理地址物理地址PA=16SS+ BPPA=16SS+ BP IBM-PC汇编语言程序设计 浙江财经学院信息学院 5. 寄存器相对寻址方式 定 义:操作数在存储器中,其有效地址是一个基址寄存器( BX、BP)或变址寄存器(SI、DI)的内容和指令中的8位/16位 偏移量之和。 汇编格式:XR(X表示位移量,是8位或16位二进制补码表示的 有符号数) 功 能:操作数存放在存储器,寄存器R的内容加位移量X为 操作数的偏移地址EA。 图形表示如下: 地址 寄存器 操作数 存储器 段基地址 基址或变址寄存器 位移量 指令 EA IBM-PC汇编语言程序设计 浙江财经学院信息学院 【例3.5】假设指令:MOV BX, SI+100H,在执行它时,(DS) =1000H,(SI)=2345H,内存单元12445H的内容为2715H,问该指 令执行后,BX的值是什么? 解:EA=(SI)+100H=2345H+100H=2445H PA=(DS)*16+EA=1000H*16+2445H=12445H。 所以,该指令的执行效果是: 把从物理地址为12445H开始 的一个字的值传送给BX。 OP CS DS 15H 27H 10000H 12445H SI:2345H 100H EA:2445H DS:1000H 12445H 27 15 BX IBM-PC汇编语言程序设计 浙江财经学院信息学院 6. 基址变址寻址方式 定 义:操作数在存储器中,其有效地址是一个基址寄存器(BX、BP) 和一个变址寄存器(SI、DI)的内容之和。 汇编格式: BR+IR 功 能:操作数存放在存储器,BR的内容加IR的内容是操作数的偏移地 址EA。 图形表示: 操作数 存储器 段基地址 基址寄存器 变址寄存器 指令 基址值 基址寄存器 变址值 变址寄存器 EA IBM-PC汇编语言程序设计 浙江财经学院信息学院 【例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。 OP CS DS 34H 12H 10000H 12111H BX:2100H SI:0011H EA:2111H DS:1000H 12111H 12 34 BX IBM-PC汇编语言程序设计 浙江财经学院信息学院 7. 相对基址变址寻址方式 定 义:操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的 值、一个变址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。 汇编格式:X BR+IR 功 能:操作数存放在存储器,BR内容加IR内容加位移量X是操作数的偏移 地址EA。 图形表示: 存储器 基址值 基址寄存器 操作数 段基地址 基址寄存器 变址寄存器 位移量 指令 变址值 变址寄存器EA IBM-PC汇编语言程序设计 浙江财经学院信息学院 【例3.7】假设指令:MOV AX, BX+SI+200H,在执行时,(DS) =1000H,(BX)=2100H,(SI)=0010H,内存单元12310H的内容 为1234H。问该指令执行后,AX的值是什么? 解:该操作数的物理地址应由DS和EA的值形成,即: PA=12310H 所以,该指令的执行效果是: 把从物理地址为12310H开始 的一个字的值传送给AX。 OP CS DS 34H 12H 10000H 12310H BX:2100H SI:0010H 0200H EA:2310H DS:1000H 12310H 12 34 AX IBM-PC汇编语言程序设计 浙江财经学院信息学院 v跨段越问题 凡是使用寄存器为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 IBM-PC汇编语言程序设计 浙江财经学院信息学院 3.1.2 与转移地址有关的寻址方式 用来确定转移指令及转子(call)指令的转向地址。转移 地址是由各种寻址方式得到的有效地址和段地址相加而成的, 有效地址存入IP寄存器中,段地址指定为CS段寄存器内容。 段内寻址 段内直接寻址 JMP NEAR PTR NEXTJMP NEAR PTR NEXT 段内间接寻址 JMP TABLE BX JMP TABLE BX 段间寻址 段间直接寻址 JMP FAR PTR NEXTJMP FAR PTR NEXT 段间间接寻址 JMP DWORD PTR BX JMP DWORD PTR BX IBM-PC汇编语言程序设计 浙江财经学院信息学院 (1) 段内直接寻址 转向的有效地址 = 当前(IP) + 位移量(8bit/16bit) 位移量 IP寄存器 EA IBM-PC汇编语言程序设计 浙江财经学院信息学院 【例3.8】 (1)JMP SHORT QUEST 其中QUEST表示转移的符号地址,操作符SHORT表示是个8 位带符号数,数的范围是80H 7FH,即 -128 +127。它只能相 对于当前IP(转移指令的下一条指令的首地址)所指的位置作- 128 +127范围内跳转,所以称为短跳转短跳转。 (2)JMP NEAR PTR PROGA 其中PROGA表示转移的符号地址,操作符NEAR PRT表示 是个16位带符号数,数的范围是8000H 7FFFH,即 -32768 +32767。它只能相对于当前IP所指的位置作-32768 +32767范围 内跳转,所以称为近跳转。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 (2) 段内间接寻址 转向的有效地址是一个寄存器或存储单元的内容。可用 除立即数以外的任何一种数据寻址方式得到,所得到的转向 的有效地址取代IP寄存器的内容。 转向的有效地址 指令 数据寻址方式 或 根据数据寻址 方式计算出 EA值 转向的有效地址 存储单元 IBM-PC汇编语言程序设计 浙江财经学院信息学院 【例3.9】 已知 TABLE=20A2H ,(BX)=1256H ,(SI)=528EH, (DS)=2000H ,(232F8H)= 3280H ,(264E4H)=2450H JMP BX ; (IP)=1256H JMP WORD PTR TABLEBX ; (IP)=3280H JMP WORD PTR BXSI ; (IP)=2450H IBM-PC汇编语言程序设计 浙江财经学院信息学院 (3) 段间直接寻址 用指令中提供的转向段地址和偏移地址取代CS 和 IP。 指令 偏移地址 IP寄存器 段地址 CS寄存器 IBM-PC汇编语言程序设计 浙江财经学院信息学院 【例3.9】 JMP FAR PTR NEXTROUNT 32 EA 01 00 10 10 CS=0000H CS 00000 02000 IP IP=2000H CS CS=1000H NEXTROUNT IP=0132H 10132 10000 新IP 新CS IBM-PC汇编语言程序设计 浙江财经学院信息学院 (4) 段间间接寻址 用存储器中的两个相继字的内容取代CS 和 IP,存储 单元的地址可用存储器寻址方式得到。 指令 数据寻址方式 根据数据寻址 方式计算出 EA值 转向的有效地址 转向的有效地址 存储器中的两个相继字 IP CS IBM-PC汇编语言程序设计 浙江财经学院信息学院 【例3.10】 JMP DWORD PTR INTERS+BX 如DS=3000H,BX=1200H,INTERS=0020H, 则存储单元的物理地址PA=30000+0020+1200=31200H 指令执行前,CS=0000H,IP=1000H,(31220H)=40H, (31221)=01H,(31222H)=00H,(31223)=10H。 指令执行后,CS=1000H,IP=0140H,(31220H)=40H, (31221)=01H,(31222H)=00H,(31223)=10H。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 指令存储和执行情况: JMP DWORD PTR INTER BX CS=0000H CS 00000 01000 IP IP=1000H CS CS=1000H IP IP=0140H 10140 10000 代码段 01 40 00 10 DS=3000H DS 30000 31220 INTER+BX 数据段 新IP 新CS 31221 31222 31223 IBM-PC汇编语言程序设计 浙江财经学院信息学院 3.2 程序占有的空间和执行时间 IBM-PC汇编语言程序设计 浙江财经学院信息学院 3. 80x86的指令系统 80X86指令系统分为以下6组: 数据传送指令数据传送指令 串处理指令串处理指令 算术指令算术指令 控制转移指令控制转移指令 逻辑指令逻辑指令 处理机控制与杂项操作指令处理机控制与杂项操作指令 在学习汇编指令时,指令的功能是我们学习和掌握的重点,但 要准确、有效地运用这些指令,我们还要熟悉系统对每条指令的一 些规定或约束。因此,对指令要掌握以下几个方面内容: vv指令操作数的寻址方式;指令操作数的寻址方式; vv指令对标志位的影响、标志位对指令的影响;指令对标志位的影响、标志位对指令的影响; vv指令的执行时间,对可完成同样功能的指令,要选用执行时间短指令的执行时间,对可完成同样功能的指令,要选用执行时间短 的指令的指令 。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 3. 3. . 数据传送指令 数据传送指令 数据传送指令负责把数据、地址或立即数传送到寄存器负责把数据、地址或立即数传送到寄存器 、存储器或端口号寄存器、存储器或端口号寄存器。它相对于高级语言里的赋值语句 。 通用数据传送通用数据传送:MOV PUSH POP 累加器专用传送(输入输出)累加器专用传送(输入输出): IN OUT XLAT 地址传送地址传送: LEA LDS LES 标志寄存器传送标志寄存器传送: LAHF SAHF PUSHF POPF 类型转换指令类型转换指令:CBW CWD IBM-PC汇编语言程序设计 浙江财经学院信息学院 vMOV 传送指令 格 式: MOV MOV Reg/MemReg/Mem, Reg/Mem/ImmReg/Mem/Imm 其中:RegRegister(寄存器),MemMemory( 存储器),ImmImmediate(立即数),它们可以是8位、16位 。 功 能:指令的功能是把源操作数(第二操作数)的值传给目 的操作数(第一操作数)。指令执行后,目的操作数的值被改变 ,而源操作数的值不变。在存储单元是该指令的一个操作数时, 该操作数的寻址方式可以是任意一种存储单元寻址方式。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 段寄存器 CS、DS、SS、ES 通用寄存器 8位或者16位 存储器 立即数 8位或者16位 在汇编语言中,主要的数据传送方式如下图所 示。虽然一条MOV指令能实现其中大多数的数据传 送方式,但也存在MOV指令不能实现的传送方式。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 对MOV指令有以下几条具体规定,其中有些规定对其它指令 也同样有效。 (1)两个操作数的数据类型要相同两个操作数的数据类型要相同,要同为8位、16位, 如:MOV BL,AX等是不正确的; (2)两个操作数不能同时为段寄存器两个操作数不能同时为段寄存器,如:MOV ES,DS等; (3)代码段寄存器代码段寄存器CSCS不能为目的操作数,但可作为源操作数不能为目的操作数,但可作为源操作数, 如:指令MOV CS, AX等不正确,但指令MOV AX,CS等 是正确的; (4)立即数不能直接传给段寄存器立即数不能直接传给段寄存器, 如:MOV DS,100H等; (5)立即数不能作为目的操作数立即数不能作为目的操作数,如:MOV 100H,AX等; (6)指令指针指令指针IPIP,不能作为不能作为MOVMOV指令的操作数指令的操作数; (7)两个操作数不能同时为存储单元两个操作数不能同时为存储单元, 如:MOV VARA,VARB等,其中VARA和VARB是同数据 类型的内存变量。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 vPUSH进栈指令 堆栈是一个重要的数据结构,它具有“先进后出” 的特点,通常用来保存程序的返回地址。它主要有两 大类操作:进栈操作和出栈操作。 指令格式:PUSHPUSH Reg/MemReg/Mem 一个字进栈,系统自动完成两步操作: SPSP-2,(SP)操作数; 功 能:将寄存器、段寄存器或存储器中的一 个字数据压入堆栈,堆栈指针减2。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 【例】PUSH AX 28 16 A7 SS=5000H SS 50000 堆栈段 52500 52501 52502 SP=2500H SP 31 25 AX 28 31 16 A7 SS=5000H SS 50000 堆栈段 52500 52501 52502 SP=24FEH SP 25 31 25 AX 525FF 525FE (1)执行前(2)执行后 IBM-PC汇编语言程序设计 浙江财经学院信息学院 vPOP进栈指令 指令格式指令格式:POPPOP Reg/MemReg/Mem 弹出一个字,系统自动完成两步操作: 操作数操作数(SP)SP),SPSP+2SPSP+2; 功功 能能:将栈顶元素弹出送至某一寄存器、段寄 存器(除CS外)或存储器,堆栈指针加2。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 【例】POP BX (1)执行前(2)执行后 48 6B 9A 28 SS 50000 堆栈段 51001 51002 51003 SP=1000H SP 75 C1 BX 51000 48 6B 9A 28 SS 50000 堆栈段 51001 51002 51003 SP=1002H SP 48 6B BX 51000 IBM-PC汇编语言程序设计 浙江财经学院信息学院 vIN输入指令 输入指令用来从指定的外设寄存器取信息送入累从指定的外设寄存器取信息送入累 加器加器。它有几种形式: 长格式: IN AL, PORT IN AL, PORT (字节)字节) IN AX, PORT IN AX, PORT (字)字) 执行操作:(AL) (PORT) (字节) (AX) (PORT+1, PORT)(字) 短格式: IN AL, DX IN AL, DX (字节)字节) IN AX, DX IN AX, DX (字)字) 执行操作:(AL)(DX) (字节) (AX)(DX)+1,(DX)(字) IBM-PC汇编语言程序设计 浙江财经学院信息学院 注意:该指令的作用是从端口中读入一个字节 或字,并保存在寄存器AL或AX中。如果某输如果某输 入设备的端口地址在入设备的端口地址在02550255范围之内,那么,可范围之内,那么,可 在指令在指令ININ中直接给出,否则,要把该端口地址中直接给出,否则,要把该端口地址 先存入寄存器先存入寄存器DX中,然后在指令中由DX来给 出其端口地址。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 例如: IN ALIN AL, 60H60H ;从端口60H读入一个字节到AL中 IN AXIN AX,20H20H;把端口20H、21H按“高高低低”组成的 字读入AX MOV DXMOV DX,2F8H2F8H IN ALIN AL,DXDX;从端口2F8H读入一个字节到AL中 IN AXIN AX,DXDX;把端口2F8H、2F9H按“高高低低”组成 的字读入AX IBM-PC汇编语言程序设计 浙江财经学院信息学院 vOUT输出指令 输出指令用来把累加器的内容送往指定的外设存储器把累加器的内容送往指定的外设存储器,它有几 种形式: v长格式: OUT PORT, ALOUT PORT, AL (字节) OUT PORT, AXOUT PORT, AX (字) 执行操作:(PORTPORT)(ALAL) (字节) (PORT+1, PORTPORT+1, PORT)(AXAX)()(字) v短格式: OUT DX, ALOUT DX, AL (字节) OUT DX, AXOUT DX, AX (字) 执行操作:(DXDX)(ALAL) (字节) (DXDX)+1,+1,(DXDX)(AXAX)()(字) IBM-PC汇编语言程序设计 浙江财经学院信息学院 注意:该指令的作用是把寄存器AL或AX的内容输出到指定端口 。如果某输出设备的端口地址在0255范围之内,那么,可在指 令OUT中直接给出,否则,要把该端口地址先存入寄存器DX中 ,然后在指令中由DX来给出其端口地址。 例如: OUT 61HOUT 61H,ALAL;把AL的内容输出到端口61H中 OUT 20HOUT 20H,AXAX;把AX的内容输出到端口20H、21H中 MOV DXMOV DX, 3C0H3C0H OUT DXOUT DX,ALAL;把AL的内容输出到端口3C0H中 OUT DXOUT DX,AXAX;把AX的内容输出到端口3C0H、3C1H中 IBM-PC汇编语言程序设计 浙江财经学院信息学院 vXLAT 换码指令 转换指令有两个隐含操作数两个隐含操作数BX和AL。 格格 式式:XLAT OPRXLAT OPR 或 XLATXLAT 执行操作执行操作: (ALAL)(BXBX)+ +(ALAL) 功功 能能:其功能是把BX的值作为内存字节数 组首地址、下标为AL的数组元素的值传送给 AL。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 n例:MOV BXMOV BX,offset tableoffset table ; (BX)=0040H MOV ALMOV AL,3 3 XLAT XLAT 指令执行后 (AL)=33H 32H 31H 33H DS=F000H DS 数据段 F0040 F0041 (AL)=3 table 30H (BX) F0042 F0043 把BX的值作为内存字 节数组首地址、下标 为AL的数组元素的值 传送给AL。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 v地址传送指令 取有效地址指令LEA: 指令LEA是把一个内存变量的把一个内存变量的有效地址有效地址送给指定的寄存器送给指定的寄存器 。其指令格式如下: LEALEA RegReg,MemMem 该指令通常用来对指针或变址寄存器BX、DI或SI等置初值之用。 取段寄存器指令: 该组指令的功能是把内存单元的一个把内存单元的一个“ “低字低字” ”传送给传送给指令中指指令中指 定的定的1616位寄存器位寄存器,把随后的一个,把随后的一个“ “高字高字” ”传给传给相应的段寄存器相应的段寄存器(DSDS 、ESES)。其指令格式如下: LDS/LESLDS/LES RegReg, , MemMem IBM-PC汇编语言程序设计 浙江财经学院信息学院 例:LEA BXLEA BX,BX+SI+0F62HBX+SI+0F62H LDS SILDS SI,10H10H LES DI LES DI,BXBX MOV BXMOV BX,TABLETABLE ; ; (BXBX)=0040H=0040H MOV BXMOV BX,OFFSET TABLEOFFSET TABLE ; ; (BXBX)=1000H=1000H LEA BXLEA BX,TABLETABLE ; ; (BXBX)=1000H=1000H LDS BXLDS BX, TABLE TABLE ; ; (BXBX)=0040H=0040H ; ; (DSDS)=3000H=3000H LES BXLES BX,TABLETABLE ; ; (BXBX)=0040H=0040H ; ; (ESES)=3000H=3000H 40 H 00 H 00 H 30 H TABLE 3000H:1000H IBM-PC汇编语言程序设计 浙江财经学院信息学院 v标志寄存器传送指令 标志送AH指令: LAHF 执行操作:(AH)(FLAGS的低字节) AH送标志寄存器指令:SAHF 执行操作: (FLAGS的低字节)(AH) 标志进栈指令:PUSHF 执行操作: (SP)(SP) - 2 (SP)+1, (SP)(FLAGS) 标志出栈指令:POPF 执行操作: (FLAGS)(SP)+1,(SP) (SP)(SP)+ 2 IBM-PC汇编语言程序设计 浙江财经学院信息学院 v类型转换指令指令 CBW AL AX 执行操作: 若(若(ALAL)的最高有效位为的最高有效位为0 0,则(,则(AH)= 00H AH)= 00H 若(若(ALAL)的最高有效位为的最高有效位为1 1,则(,则(AH)= FFHAH)= FFH CWD AX (DX,AX) 执行操作:若(若(AXAX)的最高有效位为的最高有效位为0 0,则(,则(DX)= 0000H DX)= 0000H 若(若(AXAX)的最高有效位为的最高有效位为1 1,则(,则(DX)= FFFFHDX)= FFFFH 例: (A AX X)= 0BA45H= 0BA45H CBW ; (AX)=0045H CWD ; (DX)=0FFFFH (AX)=0BA45H IBM-PC汇编语言程序设计 浙江财经学院信息学院 3. 算术指令 算术运算指令是反映CPU计算能力的一组指令,也是编程时常 使用的一组指令。它包括:加、减、乘、除及其相关的辅助指令。 该组指令的操作数可以是8位、16位。当存储单元是该类指令的操 作数时,该操作数的寻址方式可以是任意一种存储单元寻址方式该操作数的寻址方式可以是任意一种存储单元寻址方式。 v 加法指令 ADD、ADC、INC v 减法指令 SUB、SBB、DEC、NEG、CMP v 乘法指令 MUL、IMUL v 除法指令 DIV、IDIV v 十进制调整指令 DAA、DAS、 AAA、AAS、AAM、AAD IBM-PC汇编语言程序设计 浙江财经学院信息学院 1.加法指令 v 加法指令: ADD DST,SRC 功能:将目的操作数与源操作数相加,结果存入目的地址中,源地 址的内容不改变。 执行操作:(DST) (SRC)+(DST) v 带进位加法指令: ADC DST,SRC 功能:将目的操作数加源操作数再加低位进位,结果送目的地址。 执行操作:(DST) (SRC)+(DST)+ CF v 加1指令: INC OPR 功能:将目的操作数加1,结果送目的地址。 执行操作: (OPR) (OPR)+ 1 注意: 除INC指令不影响CF标志外,均对条件标志位有影响。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 v 标志寄存器FLAGS的介绍 指令的执行与标志有很大关系。 标志分成两类: n 状态标志用来记录程序运行结果的状态信息,许多指令的 执行都将相应地设置它。它们分别是: CF ZF SF PF OF AF n 控制标志可由程序根据需要用指令设置,用于控制处理器 执行指令的方式。它们分别是: DF IF TF 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF IBM-PC汇编语言程序设计 浙江财经学院信息学院 vv进位标志进位标志CFCF(Carry FlagCarry Flag) 当运算结果的最高有效位有进位(加法)或借位( 减法)时,进位标志置1,即CF = 1;否则CF = 0。 例如: 3AH + 7CHB6H,没有进位:CF = 0 AAH + 7CH(1)26H,有进位:CF = 1 IBM-PC汇编语言程序设计 浙江财经学院信息学院 vv零标志零标志ZFZF(Zero FlagZero Flag) 若运算结果为0,则ZF = 1,否则ZF = 0。 例如: 3AH + 7CHB6H,结果不是零:ZF = 0 86H + 7CH(1)00H,结果是零:ZF = 1 注意:ZF为1表示的结果是0。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 vv符号标志符号标志SFSF(Sign FlagSign Flag) 运算结果最高位为1,则SF = 1;否则SF = 0。 例如: 3AH + 7CHB6H,最高位D71:SF = 1 86H + 7CH(1)00H,最高位D70:SF = 0 注意:有符号数据利用最高有效位表示数据的符号。所 以,最高有效位就是符号标志的状态。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 vv奇偶标志奇偶标志PFPF(Parity FlagParity Flag) 当运算结果最低字节中“1”的个数为零或偶数时,PF = 1;否则PF = 0。 例如: 3AH + 7CHB6H10110110B, 结果中有5个1,是奇数:PF = 0 注意:PF标志仅反映最低8位中“1”的个数是偶或奇,即使 是进行16位字操作。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 vv辅助进位标志辅助进位标志AFAF(Auxiliary Carry FlagAuxiliary Carry Flag) 运算时D3位(低半字节)有进位或借位时,AF = 1; 否则AF = 0。 例如: 3AH + 7CHB6H,D3有进位:AF = 1 注意:这个标志主要由处理器内部使用,用于十进制算术 运算指令中,用户一般不必关心。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 vv溢出标志溢出标志OFOF(Overflow FlagOverflow Flag) 若算术运算的结果有溢出,则OF=1;否则 OF0。 例如: 3AH + 7CHB6H,没有溢出:OF = 0 AAH + 7CH(1)26H,产生溢出:OF = 1 问题: 什么是溢出? 溢出和进位有什么区别? 如何判断是否溢出? IBM-PC汇编语言程序设计 浙江财经学院信息学院 举例: n=8 bit 带符号数(-128127) , 无符号数(0255) 0 0 0 0 0 1 0 0 + 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 1 带:(+4)+(+11)=+15 OF=0 无:4+11=15 CF=0 带符号数和无符号数都不溢出 0 0 0 0 1 0 0 1 + 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 带: (+9)+(+124)=-133 OF=1 无: 9+124=133 CF=0 带符号数溢出无符号数溢出 0 0 0 0 0 1 1 1 + 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0 带:(+7)+(-5)=+2 OF=0 无:7+251=258 CF=1 带符号数和无符号数都溢出 1 0 0 0 0 1 1 1 + 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 带:(-121)+(-11)=+134 OF=1 无:135+245=124 CF=1 CF 位表示无符号数相加的溢出。 OF 位表示带符号数相加的溢出。 IBM-PC汇编语言程序设计 浙江财经学院信息学院 【例1】加1指令。 INC BX ;(BX)+1BX。 【例2】双字加法运算,设目的操作数存放在DX和AX寄存器 中,其中DX放高位字,源操作数存放在BX和CX寄存器中, 其中BX放高位字,指令执行前:(DX)=0020H,(AX) =0F365H,(BX)=0005H,(CX)=0E024H。 ADDAX,CX;(AX)=0D389H,CF=1 ADCDX,BX;(DX)=0008H,CF=0 IBM-PC汇编语言程序设计 浙江财经学院信息学院 2.减法指令 v 减法指令: SUB DST,SRC 功能:目的操作数减去源操作数,结果存于目的地址,源地址的 内容不变。 执行操作: (DST)(DST)- (SRC) v 带借位减法指令: SBB DST,SRC 功能:目的操作数减源操作数再减低位借位CF,结果送目的地址 执行操作: (DST)(DST) - (SRC)- CF v 减1指令: DEC OPR 功能:将目的操作数减1,结果送目的地址。 执行操作: (OPR) (OPR) - 1 IBM-PC汇编语言程序设计 浙江财经学院信息学院 v减法指令对条件标志位的影响: CF 位表示无符号数减法的溢出。 OF 位表示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业的地域形成课件
- 子宫平滑肌瘤课件
- 子宫内膜癌课件
- 工业电器安全培训课件
- 娱乐主播教学课件
- 娱乐中科普健康知识课件
- 威海食品安全知识培训课件
- 工业机器人教学课件
- 威尼的小艇课件
- 2024年利辛县招聘城市社区专职工作人员考试真题
- 2024版2025秋贵州黔教版综合实践活动五年级上册全册教案教学设计
- 转作风重实干课件
- 村干部饮水安全培训总结课件
- 安全生产治本攻坚三年行动半年工作总结
- 单招备考科学方案
- 医美咨询培训课件
- 海船船员适任 评估规范(2024)轮机专业
- DB50-T 1463.2-2023 牛羊布鲁氏菌病防控技术规范 第2部分:人员防护
- NoSQL数据库应用与实践 课件 第1-6章 认识NoSQL - 增删改查
- 20世纪宋史研究:主要趋势、热点领域与未来展望
- 2025年度餐饮店知识产权保护与合伙人合同
评论
0/150
提交评论