微机原理:第3章 指令系统-1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(BX)+(DI)+1234H地址中的字数据送
练习题:
假设(DS)=2000H, (ES)=2100H, (SS)=1500H, (SI)=00A0H, (BX)=0100H, (BP)=0040H,
在指令 MOV AX, src中, 以下src为何种寻址方式?
求有效地址EA和物理地址PA各是多少?
(3)MOV
(4)MOV
[SI],[1000H]
DX,CL (5)MOV DS,FS
MOV AL,1234H
MOV BX,AL
12
直接寻址:操作数有效地址(16位或32位)直接包含在指
令中,它位于操作码之后,存放在代码段中。如果指令无前缀 指明在那一段中,则默认操作数存放在数据段。
例: MOV AL,[0010H] ;0010H为偏移地址 MOV BX,D1 ; DS段D1的内容送BL,
不影响标志位:CF、SF、ZF、OF、AF、PF
传送指令MOV
格式:
MOV 目标,源 ;目标

立即数、寄存器、存储器 寄存器、存储器
23
立即数
注意: 1.立即数和CS不能是目标操 作数 例MOV 10H,AL 错 MOV CS,AX 错
2.存储器之间,段寄存器之间 不能传送 例 MOV DS,SS 错 寄存器 存储器 MOV [BX],[SI] 错 3.立即数不能送段寄存器 例 MOV AX,1000H MOV DS,AX 寄存器 段寄存器 4.源和目标操作数类型要一致 MOV AX,BL 错 5.立即数送存储器要说明 MOV BYTE PTR [SI],100 传送指令MOV示意图 MOV WORD PTR[SI], 100
16

基址加变址寻址 基址寄存器内容与变址寄存器内容之和形成操作数的偏 移地址。即:EA=[基址寄存器]+[变址寄存器] (1) 16位寻址 基址寄存器:BX、BP; 变址寄存器:DI、SI 如:MOV AX,[BX+SI] 或MOV AX,[BX][SI];DS段(BX)+(SI)地址中的字数 据送AX。
(1)100H[BX]
(3)[BP] (5) BX (7)[SI] (9)1000H[BP][SI]
(2)[BX]
(4)ES:[BX+10H] (6)[1000H] (8)1000H[BX+SI] (10)[BX][SI]
§3 指令系统
数据传送类指令
算术运算类指令
逻辑运算类指令
串操作类指令 控制转移类指令
9
CPU 寄 存 器 运算器
内存
代码段
数据段
立 即 数 存 储 器
立即寻址:操作数包含在指令中,存放在代码段。
寄存器寻址:操作数在寄存器中,存放在CPU内。
存储器寻址:操作数在存储器(数据段)中。
1.立即寻址
指定的操作数紧跟在操作码之后,直接存放在代码段中 如:MOV BL,56H ;BL 56H
MOV AX,2056H
OP 56H OP 56H 20H
;AX
2056H
BL 56H AH AL 20H 56H AX
注意:立即数只能源操作数,不能目标操作数。
11
2.寄存器寻址
操作数在CPU的寄存器中,而寄存器的名由指令指出
如:MOV BL,AL
注意:在同一条指令中,类型必须匹配。如下
列指令是错误的:
PUSH PUSH POP POP AX BX AX BX
写出指令完成如下功能:
通过堆栈将AX,BX的内容交换
SS
2000H:000BH (SP) (SP)+2
2000H
AX 56H
BX 33H
78H 44H
78H 56H 44H 33H
(SP)+2
28
000BH 000CH 000DH 000EH 000FH 0010H
格式: LEA 目标,源
reg,mem
– 其功能是将源操作数的偏移地址送到一个寄存器中。 所以是16位地址的传送指令。 – 源操作数是任何一种存储器操作数的寻址方式。 LEA AX,[2000H] ;AX=2000H LEA BX,BLOCK ;BLOCK所代表的地址送BX (MOV BX,OFFSET BLOCK) LEA CX,[SI] ;CX=SI LEA DX,BLOCK[SI] ;DX=BLOCK+SI LEA AX,[BX][DI] ;AX=BX+DI
无前缀默认操作数存放在堆栈段 无前缀默认操作数存放在数据段
14
例如:
MOV AX,[BX] ; AX (DS*10H+(BX))
MOV AX,[BP]
;AX
(SS*10H+(BP))
(ES*10H+(BX)) (DS*10H+(BP))
MOV AX,ES:[BX]; AX MOV AX,DS:[BP]; AX
7
6. ASCII码 ASCII码字符串: 如‘ABC123’ ASCII码数: 如30H~39H(0~9),41H~46H(A~F)
返回
8
第2节 80X86的寻址方式
80X86的寻址方式共有7种: 1.立即寻址
2.寄存器寻址
3.直接寻址
4.寄存器间接寻址
5. 相对寄存器间接寻址 6.基址加变址寻址 7.相对基址加变址寻址
fsfs段段2000h2000h的内容送的内容送alal2001h2001h的内容送的内容送ahah寄存器间接寻址寄存器间接寻址操作数存放在存储器中但操作数的偏移地址存放在寄操作数存放在存储器中但操作数的偏移地址存放在寄111616位寻址位寻址eadieadisisibxbxbpbp无前缀默认操作数存放在数据段无前缀默认操作数存放在数据段无前缀默认操作数存放在堆栈段无前缀默认操作数存放在堆栈段15例如
D1+1的内容送BH
注:D1为符号地址 (变量名)
OP 10H 00H
AL
(DS)*24+0010H
13
如:MOV AX,[2000H]
;DS段2000H的内容送AL, 2001H的内容送AH MOV AX,FS:[2000H];FS段2000H的内容送AL, 2001H的内容送AH 寄存器间接寻址 操作数存放在存储器中,但操作数的偏移地址存放在寄 存器中。 (1)16位寻址 EA= [DI]、[SI]、[ BX]、[BP]
数据出栈指令:先将指针内容送到目标,后 修改指针 POP 目标 ; ((SP)) ;(SP)+ 2
26
目标 SP
设:(SS)=2000H,(SP)=0010H (AX)=3344H,(BX)=5678H
PUSH PUSH POP POP AX BX AX BX
写出指令完成如下功能:
通过堆栈将AX,BX的内容交换
21
一、指令格式 指令格式: [标号:] 操作码 [操作数,…] [;注释] 其中: 标号:确定汇编语句的位置,提供跳转、循 环的目标。 操作码:汇编语句操作。 操作数:操作数据项,数目因操作码而异。 注释:程序注解。 如:START:MOV AX,DATA MOV DS,AX ;设置DS
22
(一)数据传送类指令 用于实现存储器与寄存器 、寄存器与寄存器、 累加器与I/O端口之间字节、字或双字的传送, 也可将立即数传送到存储器或寄存器
MOV DX,03FCH IN 33 AX,DX
标志寄存器传送指令 指令格式: LAHF SAHF POPF ; ; ; 标志寄存器低8位内容送AH AH内容送标志寄存器低8位 16位标志寄存器内容进栈 16位出栈内容送标志寄存器
PUSHF ;
34
练习:找出下面指令的错误并改正
(1)MOV CS ,1000H (2)MOV 15H,CL

堆栈说明:
1.堆栈以字为单位操作 PUSH BL 错 PUSH [DI]
是正确表示的指令,当然,也可以写为: PUSH WORD PTR[DI]
2.CS不能做目标
PUSH CS 对 POP CS 错 3.堆栈操作指令都隐含了一个操作数:SP所指的 栈顶数据; 4.没有立即寻址 PUSH 1234H 错 5先进后出,后进先出
17
相对基址加变址寻址 基址寄存器内容与变址寄存器内容再加偏移量 之和形成操作数的有效地址。即: EA=[基址寄存器]+[变址寄存器]+偏移量 如 : MOV A X,1234H[BX+DI] 或MOV AX,[BX+DI+1234H] 或MOV AX,1234H[BX][DI] AX。
18
;DS段
32
TABLE
30H 31H 32H 33H 34H . .
0 1 2 3 4 .. .
I/O数据传送指令 格式:

AL,AX
输入 IN Acc,端口;将端口数据读出送入CPU 输出 OUT 端口,Acc;将CPU累加器中数据写入端口
<8位,直接给出 >8位,端口地址 DX
例: IN AL,28H OUT 15H,AL
20
指令操作数符号说明: ac:累加器
reg :通用寄存器(8位或16位或32位) reg8 、reg16、reg32 :8位、16位、32位寄存器 Seg:段寄存器 mem :存储器( 8位或16位或32位) mem8 、mem16、mem32 : 8位、16位、32位存储器 imm :立即数( 8位或16位或32位) imm8、imm16、imm32 :8位、16位、32位立即数
SS
2000H:000BH (SP)-2 (SP)-2
2000H
BX 56H
AX 33H
78H 44H
SP
27
78H 56H 44H 33H
000BH 000CH 000DH 000EH 000FH 0010H
设:(SS)=2000H,(SP)=0010H (AX)=3344H,(BX)=5678H
5
3.浮点数(实数) 浮点数是属于有理数中某特定子集的数字表 示,在计算机中用以近似表示任意某个实数 。 具体的说,这个实数由一个整数或定点数( 即尾数)乘以某个基数(计算机中通常是2 )的整数次幂得到,这种表示方法类似于基 数为10的科学记数法。
6
4. BCD码 压缩BCD码:1字节存放两个BCD码,格式如图a
第3章 指令系统
郏东耀
1
主要内容 §1 数据类型
§2 寻址方式 §3 指令系统
2
学习指导和要求

了解指令集的六种数据类型
掌握寻址方式;
熟记各种类型的指令格式及功能,
并能编写简单程序。
3
第1节 80X86的数据类型
80X86汇编语言中可使用的数据类型有以下六种: 1.无符号二进制数
字节(8位):
15
相对寄存器间接寻址 寄存器内容与位移量之和形成操作数的有效地址。即: EA=[寄存器]+位移量 (1) 16位寻址 EA={[BX]、[BP]、[DI]、[SI]}+位移量(带符号8或16 位整数) 如: MOV AX,2040H[BX] 或 MOV AX,[BX+2040H];DS段(BX)+2040H地址中 的字数据送AX。
7 十位 4 3 个位 0 7 4 3 0 0或任意 个位
(a) (b) 非压缩BCD码:1字节存放一个BCD码(低4位), 格式如图b 5. 字符串
由一串字符组成的,它是字符的序列,从某种程度上来说有 些类似于字符的数组。一个字母或汉字算一个字符,字符 跟字符串没有严格的界定。“ab”合起来称字符串,分开 “a”,“b”就叫字符了。
24
指令格式:MOV
OP1, OP2
reg/Sreg,reg reg, Sreg reg/Sreg, mem mem, reg/Sreg reg, imm mem, imm
例如:用如下指令可给数据段寄存器DS赋初值 MOV AX,DATA MOV DS, AX
25
堆栈操作指令
数据进栈指令:先修改指针,后源内容入栈 PUSH 源 ;(SP)-2 ; 源 SP ((SP))
29
交换指令XCHG 格式:XCHG 操作数1,操作数2 ;
功能: 操作数1 操作数2
–如:XCHG AX, BX XCHG AX, [BX]
说明: 1.操作数可以是reg,mem 2.两个存储器操作数不能直接交换; 3.不能在交换指令中使用段寄存器,用一个也不可以。
30
取偏移地址指令LEA
31
查表指令XLAT
格式:XLAT ; AL ((BX)+(AL)) 功能:BX指向表的首地址(DS段内),AL装入要转 换的代码在表中的序号,并将XLAT指令执行的结果存于AL 中。
序号
例如:查找ASCII码表中,3的ASCII码 MOV AX,SEG TABLE MOV DS,AX LEA BX,TABLE AL 33H MOV AL,3 XLAT ;ASCII码33H保存在AL
0~255 (0~0FFH),占用一字节存储单元。 字(16位): 0~65535 (0~0FFFFH),占用连续的两字节存储单元, 低地址存储单元存放低8位数据,高地址存储单元存放 高8位数据,低字节地址为该字的地址。
4
2. 有符号二进制数
字节: -128~+127 (80H~FFH, 00H~7FH) 字: -32768~+32767 (8000H~FFFFH, 00000H~7FFFH) 以补码形式存储,地址单元分配与无符号数类似。
相关文档
最新文档