第3章 80868088的指令系统
第3章 80868088的指令系统
![第3章 80868088的指令系统](https://img.taocdn.com/s3/m/af9cf665b84ae45c3b358c90.png)
3.1 寻 址 方 式
例如: ADD AX,BX 其中AX是目的操作数,BX是源操作数,执行前, AX存放被加数,BX存放加数,执行后,AX和BX相 加的结果存放在AX中。 从书写形式来看,8088/8086系统中的操作数 可以分为三种类型:立即数操作数、寄存器操作 数和存储器操作数。
课件制作人:刘永华
3.1 寻 址 方 式
1. 立即数操作数 立即数是作为指令代码的一部分出现在指令 中。它通常作为源操作数使用。其书写形式可 以为二进制、八进制、十进制和十六进制数, 也可以是一个可求出确定值的表达式。 2. 寄存器操作数 寄存器操作数是把操作数存放在寄存器中, 用来参加运算或存放结果。在双操作数指令中, 它可以作为源操作数和目的操作数。其书写形式 就是寄存器的名称。
课件制作人:刘永华
3.1 寻 址 方 式
3.1.2 寻址方式 寻址方式共有7种: 1. 寄存器寻址 寄存器寻址方式中,指令所需要的操作数存 放在指令指明的寄存器中。对16位操作数, 寄存器可以是AX、BX、CX、DX、SI、DI、SP、 CS、DS、ES、SS和BP;对8位操作数,寄存器 可以是AL、AH、BL、BH、CL、CH、DL和DH。 这种寻址方式速度较快,对于那些需要经常 存取的操作数,采用寄存器寻址方式较为合 适。
课件制作人:刘永华
图3.3 MOV AX,BX
3.1 寻 址 方 式
2. 寄存器间接寻址 寄存器间接寻址方式中,操作数的偏移地址EA在指 令指明的寄存器中,即寄存器的内容为操作数的偏 移地址EA,而操作数存放在存储器中。 能够用来间接寻址的寄存器只能是寄存器SI、DI、 BP、BX其中之一。若指令中指定的寄存器是BX、DI 或SI,则操作数在当前数据段中,所以操作数的物 理地址PA的形成是由数据段寄存器DS的内容左移4位, 加上BX、DI或SI中的偏移地址EA。若指令中指定的 寄存器是BP,则操作数在当前堆栈段中,所以操作 数的物理地址PA的形成是堆栈段寄存器SS的内容左 移4位,加上BP中的偏移地址EA形成操作数的物理地 址PA,如图3.4所示。
第三章 80868088 CPU的指令系统(第一讲)
![第三章 80868088 CPU的指令系统(第一讲)](https://img.taocdn.com/s3/m/1bafda630b1c59eef8c7b487.png)
31
例如: 例如:
PUSH PUSH PUSHF AX CX ;保护标志寄存器内容 ;这段程序要用到AX,CX以及标志位 ;恢复标志寄存器内容 CX AX
POPF POP POP
... ...
32
数据传送指令中,除SAHF和POPF这两条指令 外,其余所有指令均不影响标志位.
33
3.3.2 算术运算指令
20
BX
执行后 (BX)=1020
高地址
POP BX指令执行示意图 指令执行示意图
17
堆栈指令使用时应注意几点: 堆栈指令使用时应注意几点:
①堆栈操作总是按字进行 堆栈操作总是按字 不能从栈顶弹出一个字给CS ②不能从栈顶弹出一个字给CS 堆栈指针为SS SP,SP永远指向栈顶 SS: ③堆栈指针为SS:SP,SP永远指向栈顶 SP自动进行增减量 自动进行增减量( ④SP自动进行增减量(-2,+2)
IP IP(下) 继主 续程 执序 行
IP' IP'(下) 继子 续程 执序 行1
(a)
子程序调用示意图
(b)
(a) 主程序调子程序; (b) 子程序嵌套示意图
11
规定由SS指示堆栈段的段基址,堆栈指针SP 始终指向堆栈的顶部,SP的初值规定了所用 堆栈区的大小.堆栈的最高地址叫栈底.
3.2 80868088的指令系统(2)
![3.2 80868088的指令系统(2)](https://img.taocdn.com/s3/m/0ad9a0e0941ea76e58fa043d.png)
3.2.3
逻辑指令
2.移位指令
移位指令包括算术移位指令、逻辑移位指令和循环 移位指令,这些指令的功能是:将目的操作数中的所有
位按规定的方式移动相应的位数(0~255),然后将结 果送入目的地址中。其目的操作数可以是由各种寻址方 式所提供的8位(或16位)的寄存器或存储器数据。
3.2.3
3.2.3
逻辑指令
例3-27 编写一个程序段实现56×10,结果存在AX中。 MOV AL, 56 XOR AH, AH ;AH清零 SHL AX, 1 ;2X,该例X=56 MOV BX, AX ;暂存2X到BX MOV CL, 2 SHL AX, CL ;(2X)×4=8X ADD AX, BX ;(8X)+(2X)=10X
3.2.3
逻辑指令
2)逻辑或指令
指令格式:OR OPD,OPS
功能:(OPD)V(OPS)→OPD,即目的操作数与源操作数做 逻辑加运算(或运算),结果存入目的地址中。 对标志位的影响:同逻辑与运算指令。 3)逻辑非指令
指令格式:NOT OPD
功能:将目的地址中的内容取反后送回目的地址中。 对标志位的影响:无。
说明:逻辑左移和算术左移执行相同的操作,尽管提 供两个助记符,但只有一条机器指令。
指令中CNT为移位的位数,只能为1或CL。当CNT=1
时,可在指令中直接写出;当CNT>1时,必须先传送 CL寄存器。该规定同样适用于其它的移位指令。
3.2.3
逻辑指令
② 逻辑右移指令
指令格式:SHR OPD,CNT 功能:将目的操作数向右移动指定的位数,而最低位移入 CF,高位补入相应个数的0。CF的内容为最后移入位的值。 逻辑移位指令常用于无符号数的乘2n和除2n运算。 最高位 0 操作数 最低位 CF
第三章80868088指令系统
![第三章80868088指令系统](https://img.taocdn.com/s3/m/dc4b38c2534de518964bcf84b9d528ea81c72fe0.png)
第三章80868088指令系统机器语言指令由二进制代码组成。
一条指令一般包含操作码(OP )和操作数两部分,操作码指明指令所完成的操作,操作数指出该指令在执行规定操作时所需的信息。
指令中用于说明操作数(一般指源操作数)所在地址的方式被称为寻址方式。
(8086的寻址方式分两类:数据寻址方式和转移地址的寻址方式)3.2.1数据寻址方式 P51 1.立即寻址:数据是8位或16位,直接放在指令的最后一个(8位)或两个字节(16位)中,这样的数据称为立即数。
MOV AL ,80HADD AX ,0F000HMOV AX ,1234HADD AL ,10H操作码字节AX操作数字节操作码字节操作数(a )MOV AL , 80H(b )MOV AX , 1234H图3-2 立即寻址方式指令举例 P522. 寄存器寻址:数据存放在指令规定的寄存器中。
MOV CL ,DL MOV AX ,BX注意:在双操作数指令中源操作数寻址方式和目的操作数寻址方式。
CL DL AXAL AHBL BH (a )MOV CL , DL (b )MOV AX , BX图3-3 寄存器寻址方式指令举例 P523. 直接寻址:操作数在存储器中,其16位有效地址,即段内偏移地址在指令码中,占两个字节。
MOV AL ,[1064H] ;设(DS )=2000HADD AX ,[2000H]代码段操作数偏移地址数据段图3-4 直接寻址方式指令举例 P53操作数数据4. 寄存器间接寻址:操作数在存储器中,其16位有效地址EA 在指令指定的基址寄存器BX 或变址寄存器SI 、DI 中。
BX EA = SIDI 注意:新教材中有BP 【例】 MOV AX ,[SI] MOV [BX] , AL 如果:(DS )=3000H ,(SI )=2000H ,(BX )=1000H,(AL )=64H注意:默认段地址寄存器为DS 以上为二字节指令;MOV AX,[BP]为三字节指令;实为指令MOV AX ,[BP+0]的简写!图3-5 寄存器间接寻址方式指令举例 P535. 寄存器相对寻址:操作数在存储器中,其效地址是一个8位或16位的位移量与一个基址寄存器或变址寄存器的内容之和。
80868088的指令系统(通用数据传送指令)
![80868088的指令系统(通用数据传送指令)](https://img.taocdn.com/s3/m/e9df870ceff9aef8941e06f7.png)
通用数据传送指令
PUSH 和 POP指令 • 基本格式和功能
• •
指令格式:
PUSH POP SRC DEST
执行的操作: PUSH 压入。源操作数进栈至栈顶。“先减再压”
(SP) ← (SP)-2 SS:((SP),(SP)+1) ← (SRC)
POP 弹出。栈顶出栈到目的操作数。“先弹再加” (DEST) ← SS:((SP),(SP)+1) (SP) ← (SP)+2
通用数据传送指令
PUSH 和 POP指令 • 基本格式和功能
• •
与标志的关系:
与各标志位无关,不影响标志位
寻址方式: PUSH mem / reg POP mem / reg
注意: 操作数一律为16位操作数。允许使用段寄存器,但 POP操作数不允许为CS。可以使用除立即数以外的任 何数据寻址方式。
通用数据传送指令
MOV 指令 • 例子
• reg ←→reg
MOV DH, AL MOV DS, AX
• r ←→m
MOV DL, DA_BYTE MOV DL, [SI] MOV AX, DA_WORD
通用数据传送指令
MOV 指令 • 例子
• m →m
MOV DL, DA_BYTE1 MOV DA_BYTE2, DL
传送实质上是复制,对源操作数无影响。 16位数据的传送遵循地址“高对高,低对低”的原
则。这个原则不仅对MOV指令适用,对所有的传送 皆适用。
通用数据传送指令
MOV 指令 • 例子
• 立即数→r/m
MOV CL, 05H MOV AX, 1234H MOV ADDR, 12H MOV ADDR, 1234H
第三章80x86指令系统
![第三章80x86指令系统](https://img.taocdn.com/s3/m/e11dd253fd4ffe4733687e21af45b307e871f992.png)
DX 0120H
AX 10F0H
0000H 0001H
接口 端口0 端口1
…
0120H 10F0H端 口 288
…
FFFFH
端 口 65535
第三章 80x86 指 令 系 统
2)地址寻址方式
找出程序转移的地址。转移地址可以在段内(段内转移); 转移地址也可以跨段(段间转移)。仅更改IP的内容。
(1)段内直接寻址方式(相对寻址方式)
第三章 80x86 指 令 系 统
MOV [SI+10H],AX MOV CX,[BX+COUNT]
若(DS)=3000H,(SI)=2000H, (BX)=1000H,COUNT=1050H, (AX)=4050H
(DS)×10H=30000H
(SI)= 2000H
+
10H
32010H
存储器 操作码 操作码
MOV AL,[Value] 或 MOV AL,value
第三章 80x86 指 令 系 统
②寄存器间接寻址方式
操作数位于存储器中,该存储器的地址存放于指令指定的寄存器中, 指令对存储器中的内容进行运算。若无特殊说明,隐含的段地址由DS提供, 只有BP做间接寻址的时候,隐含的段地址为SS。
(SI) 源变址寄存器 (DI)目的变址寄存器 EA= (BX)基址寄存器 (BP)基地址指针寄存器
基址寄存器和变址寄存器存放数组的行、列下标,指明元素在数组中的位置。
指令书写形式:MOV AX,[BX+SI+COUNT] MOV AX,[BX][SI+COUNT] MOV AX,[BX+SI]COUNT MOV AX,[BX][SI]COUNT MOV AX,COUNT[BX][SI]
接口技术第3章
![接口技术第3章](https://img.taocdn.com/s3/m/4f909ec26edb6f1afe001f77.png)
功能:将栈顶 的一个字弹出 到送入flags ,然后SP+2 ,该指令影响 标志位。 ↑
33
算术运算类指令
1.加法与减法指令 a,影响标志位 b,只能有一个操作数在存储器中 c,目的操作数不能采用立即寻址方法
ADD DST,SRC ; DST ← DST+ SRC
ADC DST,SRC ; DST ← DST+ SRC+CF
;符号数除法
;字节运算时:AX÷SRC的商—》AL
;
AX÷SRC的余数—》AH
;字运算时: DX:AX÷SRC的商—》AX
;
DX:AX÷SRC的余数—》DX
;无符号数除法,其它同上
38
注意:
(1)乘法运算后,标志位的使用: CF = OF = 1,说明结果为一个字或双字。 CF = OF = 0,说明结果为一个字节或字,
第3章 8086/8088的指令寻址方式 及指令系统
3.0 预备知识 3.1 8086/8088的指令寻址方式
3.2 8086/8088的指令系统
1
3.0 预备知识
❖ 指令
让计算机完成某种操作的命令 用汇编语言编程时用助记符表示每一条指令
❖ 指令代码(机器码)
汇编语言程序经过汇编、连接后,指令助记符被转换成二进制代码, 就可以由CPU直接执行了。
(BX)
EA= (SI)
寄存器BP、BX﹑SI或DI在指令中给出。 例: MOV AX,[SI]
(DI) (BP)
教材P.81:图3.2 ↑
9
教材P.81:图3.2
第3章指令系统01
![第3章指令系统01](https://img.taocdn.com/s3/m/5fd29321aaea998fcc220e14.png)
无 无 CS,ES,SS 无 CS,ES,DS CS,ES,SS
IP SP SI DI 有效地址 有效地址
8086/8088指令系统 第3章 8086/8088指令系统
例题1
假设已知
(DS)=2900H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(B X)= 0100H,(BP)=0010H,数据段中变量名 , ,数据段中变量名VAL的偏 的偏 移地址值为0050H,试指出下列源操作数字段的寻址 移地址值为 , 方式是什么?其物理地址值是多少? 方式是什么?其物理地址值是多少?
8086/8088指令系统 第3章 8086/8088指令系统
3.1.2 寻址方式
以 MOV 指令为例 1. 立即寻址 *—— 操作数在指令中给出。 操作数在指令中给出。 MOV AL, 5 MOV AX, 3064H 判断方式:在源单元SRC位置上直接出现一个数据。 判断方式:在源单元SRC位置上直接出现一个数据。 SRC位置上直接出现一个数据 * 只能用于 只能用于SRC字段 字段 * SRC 和 DST的字长一致 的字长一致 × MOV AH, 3064H
不允许使用AX、 、 存放 存放EA * 不允许使用 、CX、DX存放 × MOV AX, [CX]
* SRC 和 DST的字长一致 的字长一致 MOV DL, [BX] MOV DX, [BX]
; [BX]指示一个字节单元 指示一个字节单元 ; [BX]指示一个字单元 指示一个字单元
* 适于数组、字符串、表格的处理 适于数组、字符串、
8086/8088指令系统 第3章 8086/8088指令系统
3. 直接寻址 —— 有效地址 由指令直接给出。存储器寻址 直接寻址* 有效地址EA由指令直接给出 由指令直接给出。 有效地址EA: 有效地址 :操作数的偏移地址 物理地址PA 物理地址 = 16 × (DS) + EA 例:MOV AX, [2000H] EA=2000H, 假设(DS)=3000H, 那么(PA)=32000H 假设 那么
第三章 80868088汇编语言程序设计
![第三章 80868088汇编语言程序设计](https://img.taocdn.com/s3/m/5d3e637e7fd5360cba1adbaa.png)
3.3 汇编语言程序设计基本方法
3.1 程序设计语言概述
程序设计语言是专门为计算机编程所配置的语言。它们按照
形式与功能的不同可分为3种,即 :
机器语言—— 0、1二进制代码书写指令;难认,记,写。
★例:
JMP
MOV
BB
AX,SEG SUBP
MOV DX,OFFSET AA ; 假设AA为变量名
3.2.3 汇编语言的数据
4、数值表达式 一个数值表达式可自由常量、字符常量以及代表常量的名字 等用算术、逻辑和关系运算符(Operator)连接而成。 1)算术运算符 + 、-、*、/、MOD、SHR、SHL 如:MOV AX, 19 MOD 7 MOV BX, AA+1 MOV AX, BX SHR 3
3.2.2 汇编语言语句的类型和格式
指令助记符 主要为8086/8088CPU指令系统中指令助记符。 操作数 立即操作数 如:MOV BX,1000+5*3 寄存器操作数 如:MOV BX,AX 存储器操作数 如:mov bx,[100H] 注释 ;注明语句或程序的作用
3.2.2 汇编语言语句的类型和格式
开始 指令1 指令2 ……
指令n
结束
例:对两个8字节无符号数求和,这 两个数分别用变量D1及D2表示。 将两数之和的最高位进位放在AL中, 两数之和的其他位按从高到低顺序依 次放在SI,BX,CX,DX中。
程序如下:
D D1 D2 D C SEGMENT DB 12H,34H,56H,78H,9AH,0ABH,0BCH,0CDH DB 0CDH,0BCH,0ABH,9AH,78H,56H,34H,12H ENDS SEGMENT LEA DI,D2 ASSUME CS:C, DS:D ADD DX,[DI] BG: MOV AX,D ADC CX,[DI+2] MOV DS,AX ;给DS赋段值 ADC BX,[DI+4] LEA DI, D1 ;偏移地址送DI ADC SI,[DI+6] MOV DX,[DI] ;取第1操作数 MOV AL,0 MOV CX,[DI+2] ADC AL,0 MOV BX,[DI+4] MOV AH,4CH MOV SI,[DI+6] INT 21H CLC C ENDS END BG
第三章80X86指令系统(1)
![第三章80X86指令系统(1)](https://img.taocdn.com/s3/m/7e05f325ccbff121dd3683a1.png)
1、若选择SI、DI、BX作为间接寻址
操作数一般在现行数据段区域中,用(DS)作为段地址。 即操作数物理地址为: 物理地址PA=16 d ×(DS)+(BX) 物理地址PA=16 d × (DS)+(SI) 物理地址PA=16 d × (DS)+(DI)
五、指令不同,寻址方式不同,指令执行时间不 同,时间和计算机主频(时钟周期)还有关。
6
(二)、操作数的存放 操作数的存放不外乎三种情况:
(1) 操作数包含在指令中 即指令的操作数字段包含操作数本身。这种操作数为立即数。 例:MOV AL , 08H
(2)操作数包含在CPU的一个内部寄存器中
例:INC CX
(七)相对基址加变址寻址方式(Relative based indexed addressing)
12
(一)立即寻址(Immediate addressing)
操作数直接存放在指令中,紧跟在操作码之后,作为指令 的一部分,存放在代码段里,这种操作数称为立即数。
立即数可以是8位或16位的。 16位的立即数是高位字节放在高地址,低位字节放在低地址。 使用场合:经常用于给寄存器赋初值。 注意:只能用于源操作数字段,不能用于目的操作数字段。
CS, DS, SS, ES
对于8位操作数,寄存器可以是: AL, AH, BL, BH, CL, CH, DL, DH 这种寻址方式因为操作数在寄存器中 不需要访问存储器的运算速度较高。
15
例: 指令执行前:(AX)=3064H (SS)=1234H
Hale Waihona Puke MOV SS,AX指令执行后: (SS)=3064H (AX)保持不变。
第3章 8086 8088指令系统
![第3章 8086 8088指令系统](https://img.taocdn.com/s3/m/4545060ca8114431b90dd865.png)
如: MOV AX,[BX] [DI]或写成MOV AX,[BX+DI] 设(DS)=2000H,(BX)=0256H,(DI)=6694H,则 PA=(DS)×16+(BX)+(DI)=268EAH 指令执行后,将把268EAH和268EBH两单元的内容送 到AX中,即(AH)=3BH,(AL)=20H 由于基址寄存器和变址寄存器的内容都是可以修改, 因此,在处理二维数组和表格时用这种寻址方式较 为方便。
29
3)不能用CS作目的操作数,即CS寄存器的内容不得 随意改变,CS和IP的值一般只能在转移指令时改变 4)不在段寄存器间直接传送数据 5)不允许用立即数作目的操作数dst 6)不允许直接向段寄存器传送立即数,如果需要, 则应通过通用寄存器或存储单元传送。
30
2、堆栈操作指令PUSH,POP
3.1.2 寻址方式
包括:操作数的寻址方式和指令的寻址方式。 指令通常顺序存放,因此,指令寻址只要通过对指 令指针IP内容自动加1,便可形成下一条指令地址。 当遇到转移或调用指令时,按照转移目标修改IP或 CS,因此,指令的寻址主要是转移指令和调用指令 的转移目的地址的形成方式,这里先讨论操作数的 寻址方式
②通用寄存器和段寄存器间传送
MOV MOV
③通用寄存器和存储单元间传送
MOV MOV
AL,[BX] ;AL ←(BX) [1400H],BX; (1400H)←BX
27
④段寄存器和存储单元之间的传送
MOV
DS,[3000H] ;将3000H和3001H两字节单元的 内容送到DS MOV [BX+SI],CS ;CS的内容送到BX+SI和BX+SI+1 所指的两个字节存储单元
第三章 8086 8088指令系统
![第三章 8086 8088指令系统](https://img.taocdn.com/s3/m/f8afeee3aeaad1f346933f8c.png)
MOV MOV MOV MOV MOV MOV MOV
AX , 3102H AX , [3102H] SI , AX AX , [SI] AX , [BX ] DATA AX , [BX][SI] AX, [BX] [DI] DATA
MOV AX , MOV [3102H] , MOV [SI] , MOV [BX] DATA , MOV [BX][SI] , MOV [BX] [DI ]DATA,
[例3-7] 指令 MOV AX,DATA[BX]
设:(DS)=6000H,(BX)=1000H,DATA=08H, 则物理地址=60000H+1000H+08H= 610008H
指令的执行情况如图3-6所示。执行结果为AX=5566h
DS BX ﹢) 6000 1000 0008 61008 位移量 高8位 0 位移量 低8位
MOV AX,[6000H]
③立即数到寄存器的传送
MOV MOV AL,5 BX,3078H ; 将立即数5送累加器AL ; 将立即数3078H送寄存器BX
④立即数到存储器的传送
MOV BYTE PTR[BP+SI],5 MOV WORD PTR[BX],1005H ; 将5送堆栈段中偏移地址为BP+SI所指的单元中 ;1005H 送数据段中偏移地址为BX和BX+1两单元
图 3-4 寄存器寻址示意图
采用寄存器寻址方式,虽然指令操作码在代码段中,但操作数在内部寄存器中,
指令执行时不必通过访问内存就可取得操作数,故执行速度较快。
3.2.4寄存器间接寻址
寄存器间接寻址 ——是用寄存器的内容表示操作数的偏移地址。此时寄存
器中的内容,只是存放数据的偏移地址,操作数本身在内存储器中。
第3章 8086指令系统(2)
![第3章 8086指令系统(2)](https://img.taocdn.com/s3/m/cb1f8168b80d6c85ec3a87c24028915f804d8439.png)
8086/8088指令系统按其功能分为以下类型:数 据传送指令、地址传送指令、标志寄存器传送 指令、算术运算指令、逻辑运算指令、移位指 令、控制转移指令、串操作指令、中断指令和 处理器控制指令。
一.数据传送指令
数据传送指令用于寄存器、存储单元、或输入
输出端口之间传送数据或地址。8086/8088有14
CMP AL,100
29
CMP指令执行后对标志位的影响
操作数类型
带符号的 二进制
CF ZF SF OF
两操作数的关系
01 0 0
等于
-010
小于
- 0 0 1 目的操作数 小于 源操作数
-000
大于
-011
大于
不带符号的 二进制
01 0 0
等于
10 -
- 目的操作数 低于 源操作数
00 -
-
高于
举例: n=8 bit 带符号数(-128~127), 无符号数(0~255)
PUSH AX
PUSH DX
78H
POP AX
56H
POP DX
34H
12H
9
(4)XCHG指令 格式:XCHG OP1,OP2 操作:源、目的操作数之间交换一个字节 或字的数据。源操作数或目的操作数只能 取通用寄存器或通用寄存器与存储器 例: XCHG AX,CX
XCHG AL,BL XCHG AX,[BP+DI]
中的数相乘,结果放在累加器中
乘积为双字节长时,结果放在AX中;乘积为双 字长时,分别放在DX(乘积的高16位)和AX中。 该指令的运行结果只影响标志位CF和OF 例:MOV AL,FIRST
MUL SECOND MOV THIRD,AX (2)IMUL指令 格式:IMUL SRC 该指令为带符号数相乘指令
第3章80888086指令系统(老师用的课件哦)
![第3章80888086指令系统(老师用的课件哦)](https://img.taocdn.com/s3/m/fd0acb295ef7ba0d4b733b5a.png)
第3章 8088/8086指令系统
图3.5 变址寻址示意图
第3章 8088/8086指令系统
例:MOV AX,200AH[SI];或(AX)←
[(DS)*16+(SI)+200AH
EA=(SI)
+200AH,SI为变址寄存器,200AH为16位的位移量。
图3.6为用BP寄存器进行变址寻址时的示意图。
第3章 8088/8086指令系统
3.存储器操作数 存储器操作数是把操作数放在存储器单元中。对这 类操作数,在指令中必须给出存储器的地址。存储器 的实际地址(也称物理地址)是由指定的段基址和段内地 址偏移量(也称为有效地址EA)所决定的。由于段基址 相对很少改变,故一般预先予以指定,以后通过隐含 方法使用,即只要段基址未改变,其在汇编指令中便 不再出现。此时,只给出有效地址EA(以各种寻址方式 给出)。
第3章 8088/8086指令系统
3.2 8088/8086指令系统
3.2.1 数据传送指令 1 .数据传送指令MOV 指令格式:MOV OPRD1,OPRD2 MOV 为操作码。 OPRD1为目的操作数,可以是寄存器、存储器、
累加器。
第3章 8088/8086指令系统
OPRD2为源操作数,可以是寄存器、存储器、累 加器和立即数。
第3章 8088/8086指令系统
4.寄存器间接寻址
寄存器间接寻址的操作数类型为存储器操作数,与 直接寻址方式的区别是:该存储单元的16位段内偏移 地址,不是从指令代码中直接得到,而是从指令所指 定的寄存器中得到。能用于间接寻址的寄存器为SI、 DI、BX、BP。若以SI、DI、BX进行间接寻址,应由 数据段DS的内容作为段基址,间接寻址寄存器的内容 为段内偏移量,并指定形成操作数的物理地址。若以 寄存器BP间接寻址,则BP中的内容为段内偏移量,段寄 存器SS与之一起形成物理地址。寄存器间接寻址示意 图如图3.4所示。
03第三章 Intel 80868088 CPU的指令系统04
![03第三章 Intel 80868088 CPU的指令系统04](https://img.taocdn.com/s3/m/4a752ef2f705cc17552709b4.png)
这4条指令的功能如下图示:
最高位 CF (a) ROL 最高位 CF (b) ROR 最低位 CF (d) RCR 最高位 最低位 CF (c) RCL 最低位 最高位 最低位
循环移位指令功能示意图
② 不带进位标志位的循环右移指令 ROR
【格式】 ROR mem/reg,CL ;移位位数≥1时 1 ;移位位数=1时
移位位数1时功能及操作将目的操作数的内容向右移1位或cl所指定的位数操作数最低位移入标志位cfsal将目的操作数视为有符号数因此为了保证符号不丢失算术右移时最高位不是补零而是保持不变
第3章 8086/8088指令系统
3.3.3 逻辑运算和移位指令
要点:
▪ 逻辑运算指令可实现与(测试)、或、非、异或 等四类基本逻辑运算。 ▪ 移位指令可实现指定操作数的左移或右移(包 括算术/逻辑/循环)操作。 ▪ 逻辑运算和移位指令中的绝大多数均会影响OF、 CF、PF、SF和ZF标志,对AF无影响。 ▪ 逻辑运算指令的运算规则是:按位操作,无进/ 借位。
循环移位指令与非循环移位指令不同,循环移位后, 操作数中原来的信息不会丢失,而只是改变了位置而已, 如果需要还可恢复(反向移动即可)。 循环移位指令只影响CF和OF(与非循环移位指令相 同),其余标志不受影响。
① 不带进位标志位的循环左移指令 ROL 【格式】 ROL mem/reg,CL ;移位位数≥1时 1 ;移位位数=1时 【功能及操作】 将目标操作数向左循环移动1位或CL指定 的位数,最高位移入CF,同时再移入最 低位构成循环,CF不在循环圈之内(见 图)。
循环移位指令功能示意图
③ 带进位标志位的循环左移指令 RCL
【格式】 RCL mem/reg,CL ;移位位数≥1时 1 ;移位位数=1时
第3章 8086(8088)CPU指令系统
![第3章 8086(8088)CPU指令系统](https://img.taocdn.com/s3/m/724f3657f01dc281e53af098.png)
第3章 8086/8088CPU指令系统
4.1.4 操作数寻址方式
3.存储器寻址(Memory Addressing)
4.1操作数寻址方式
存储器操作数的寻址方式中,数据都存放于存储单元中,指令操 作过程中需要BIU通过一个总线周期的访问,才能获取操作数。存储 器操作数的寻址方式是怎么计算出操作数的有效地址EA(Effective Address)。有效地址EA是三个地址量因子一个以上组合,由CPU执行 单元EU计算出来。
4.1操作数寻址方式
Relative -plus-Index Addressing)
有效地址是一个8/16位移量和一个基址与变址之和构成 EA=(BX/BP)+(SI/DI)+ DISP8/16
MOV AX,[BX+SI+10H] 操作如图所示
数据段 BX 20H 00H
3000H:0000H
注: ◆基址因子BP访问默认为堆栈段 ◆不能同时取两个基址因子;也不 能同时去两个变址因子
第3章 8086/8088CPU指令系统
3.1操作数寻址方式
3.2指令系统
1
第3章 8086/8088CPU指令系统
微机工作过程中其内部信息有两类: 一类是控制信息(指令); 一类是被加工处理的信息(数据)。
指令:微机中的控制信息就是使计算机进行某种 操作的命令,这些命令就称为指令。 指令系统:一台计算机所能执行的全部指令的集合称 为指令系统。不同的计算机其指令系统是不同的。
第3章 8086/8088CPU指令系统
4.1.4 操作数寻址方式
4.端口寻址(Port Addressing)
4.1操作数寻址方式
80X86系列CPU在访问外设时使用10根地址线A9-A0,其实际访问空 间为210=1K。根据通常书写习惯当高2为A9A8=00时,直接书写低8位, 可直接出现在指令格式中即端口的直接寻址;当A9A8≠00时,要按照 16为的数据书写,不能直接出现在指令格式中,要预先送到DX寄存器 中,即端口的间接寻址。 A 9 A 8 A7A6A5A4A3A2A1A0 0 0 X X X X X X X X 0 1 X X X X X X X X 1 0 X X X X X X X X 1 1 X X X X X X X X
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
fill
F range list:填写存储单元
go
G [=address] [addresses]:运行
hex
H value1 value2
input
I port
load
L [address] [drive] [firstsector] [number]:装入命名过的文件
move
M range address
微型计算机原理与接口技术
汇编语言程序设计概述
编程语言分类 机器语言:计算机能直接识别并执行某种操作的二进制代码串 汇编语言:用指令助记符、符号地址和标号等书写程序的语言 高级语言:C语言等
汇编语言程序优点 (1)占用空间小 (2)运行速度快 (3)有直接控制硬件的能力
开发环境: DOS环境
微型计算机原理与接口技术
name
N [pathname] [arglist]:命名
output
O port byte
proceed
P [=address] [nuregister
R[F] [register]:显示和修改寄存器[标志寄存器]
search
S range list
trace
T [=address] [value]:跟踪(单步执行)
微型计算机原理与接口技术
语句格式: [名字] 助记符 [操作数1[, 操作数2]][;注释]
START
START CODE
PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV DX, SEG MOV DS, DX MOV DX, OFFSET MOV AH, 9H INT 21H RET ENDP ENDS END START
;主过程
STRING STRING
;主过程结束 ;代码段结束 ;程序结束
DEBUG 命令:
微型计算机原理与接口技术
-?
assemble
A [address]:汇编
compare
C range address
dump
D [address]/[range]:显示存储单元
enter
E address [list]:修改存储单元
a.不能直接对段寄存器用立即数赋值; MOV SS, 1234H
b.立即数不能作目的操作数; MOV 1234H, AX
c.给存储器操作数用立即数赋值时, 要指明WORD/BYTE PTR
MOV BYTE PTR [100H], 5FH d.以A-F打头的数字出现在指令中时,前面要加数字0,
以免与变量名等符号混淆
开发过程: (1)编辑源程序生成*.ASM (2)汇编生成目标程序*.OBJ: (3)连接生成可执行程序*.EXE: (4)调试:
(5)执行:
ULTRAEDIT *.ASM MASM *; LINK *;
DEBUG *.EXE
*
或者(1)-(5)全在debug中完成,只能编写小程序,数据、代码、堆栈全 在同一段内。
文本编辑器,如ULTRAEDIT
编 辑
微型计算机原理与接口技术
源程序:文件名.ASM
汇编程序,如MASM.EXE
汇 编
目标模块:文件名.OBJ
链接程序,如LINK.EXE
链 接
可执行文件:文件名.EXE
调试程序,如DEBUG.EXE
调 试
应用程序
微型计算机原理与接口技术
汇编语言程序举例:指令性语句、指示性语句、宏指令语句
微型计算机原理与接口技术
• MOV [BX][SI], AX
ADD AX, BX • 指令一般格式:
– 标号: 助记符 参数1, 参数2, 参数3 – 助记符:MOV、ADD等 – [BX][SI] 、AX和BX属于参数 • 助记符(操作码) – 标明需要计算机执行的操作 • 操作数参数 – 数量取决于操作码,可以为0~3个 – 用于存放指令在执行过程中所需要的操作数和操作结果 • 了解指令的功能,同时也要注意指令对隐含寄存器和标志位的影响
MOV AL, 5
;AL5
MOV AX, 1234H
;AX1234H
(2) 物理地址:在内存的代码段内,指令执行时不需再存取存储
器。
MOV AX, 1234H
;AH=12H,AL=34H
低地址
12H
34H
34H
12H
高地址
微型计算机原理与接口技术
(3) 适用于:给寄存器或存储单元赋初值。 (4) 注意:
DATA string DATA
STACK
STACK
CODE
SEGMENT db ‘hello$’ ENDS
;定义数据段 ;定义数据 ;数据段结束
SEGMENT STACK DB 100 DUP(?) ENDS
;定义堆栈段 ;定义堆栈段大小 ;堆栈段结束
SEGMENT
;定义代码段
ASSUME CS:CODE,DS:DATA,SS:STACK
MOV BX, 0F77H
2.寄存器寻址
微型计算机原理与接口技术
(1)格式:操作数是通用寄存器或段寄存器中的内容。 寄存器可以是:
通用寄存器(AX,BX,CX,DX,SP,BP,SI,DI, AH,AL,BH,BL,CH,CL,DH,DL)
段地址寄存器( CS,SS,DS,ES) 标志寄存器
INC CX MOV SS, AX ADD CL, BH
微型计算机原理与接口技术
第一节 操作数寻址方式
1. 立即数寻址 2. 寄存器操作数寻址 3. 存储器操作数寻址
直接寻址 寄存器间接寻址 寄存器相对寻址 基址/变址寻址 相对基址/变址寻址 4. IO端口操作数寻址 直接寻址 间接寻址
1.立即数寻址
微型计算机原理与接口技术
(1) 格式:操作数以常数的形式直接表示在指令中。
unassemble U [address]/[range]:反汇编
write
W [address] [drive] [firstsector] [number]:写文件
微型计算机原理与接口技术
第3章 8086/8088的指令系统
第一节 操作数寻址方式 第二节 转移地址寻址方式 第三节 指令介绍
指令的组成
开发工具:
MICROSOFT : INTEL: BORLAND:
MASM(宏汇编) ASM (小汇编)
TASM
需要的最基本的软件:
NOTEPAD(ULTRAEDIT.EXE) MASM.EXE: LINK.EXE: DEBUG.EXE:
编辑成*.ASM 汇编成*.OBJ 连接成*.EXE 调试
微型计算机原理与接口技术