微机原理第3章 指令系统3-2(1)
微机原理第三章作业答案
3.1 简要分析8086的指令格式由哪些部分组成,什么是操作码?什么是操作数?寻址和寻址方式的含义是什么?8086指令系统有哪些寻址方式?【解答】8086的指令格式由操作码和操作数字段组成。
操作码:要完成的操作。
操作数:参与操作的对象。
寻址:寻找操作数或操作数地址的过程。
寻址方式:指令中给出的找到操作数或操作数地址采用的方式。
8086指令系统的寻址方式主要有立即数寻址、寄存器寻址、存储器寻址和I/O端口寻址。
其中,存储器寻址可进一步分为直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址;I/O端口指令IN和OUT使用的端口寻址方式有直接寻址和间接寻址。
3.2 设(DS)=2000H,(ES)= 2100H,(SS)= 1500H,(SI)= 00A0H,(BX)= 0100H,(BP)= 0010H,数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?(1) MOV AX,21H (2) MOV AX,BX (3) MOV AX,[1000H](4) MOV AX,VAL (5) MOV AX,[BX] (6) MOV AX,ES:[BX](7) MOV AX,[BP] (8) MOV AX,[SI] (9) MOV AX,[BX+10](10) MOV AX,VAL[BX] (11) MOV AX,[BX][SI] (12) MOV AX,VAL[BX][SI]【解答】(1)MOV AX,21H立即寻址,源操作数直接放在指令中(2)MOV AX,BX寄存器寻址,源操作数放在寄存器BX中(3)MOV AX,[1000H]直接寻址,EA = 1000H,PA =(DS)×10H+EA = 2000H×10H+1000H = 21000H(4)MOV AX,VAL直接寻址,EA = [V AL] = 0050H,PA =(DS)×10H+EA = 2000H×10H+0050H = 20050H(5)MOV AX,[BX]寄存器间接寻址,EA =(BX)= 0100H,PA =(DS)×10H+EA = 2000H×10H+0100H = 20100H(6)MOV AX,ES:[BX]寄存器间接寻址,EA =(BX)= 0100H,PA =(ES)×10H+EA = 2100H×10H+0100H = 21100H(7)MOV AX,[BP]寄存器间接寻址,EA =(BP)= 0010H,PA =(SS)×10H+EA = 1500H×10H+0010H = 15010H(8)MOV AX,[SI]寄存器间接寻址,EA =(SI)= 00A0H,PA =(DS)×10H+EA = 2000H×10H+00A0H = 200A0H(9)MOV AX,[BX+10]相对寄存器寻址,EA =(BX)+10D = 0100H+000AH= 010AH,PA =(DS)×10H+EA = 2000H×10H+010AH = 2010AH(10)MOV AX,VAL[BX]相对寄存器寻址,EA =(BX)+[V AL]= 0100H+0050H= 0150H,PA =(DS)×10H+EA = 2000H×10H+0150H = 20150H(11)MOV AX,[BX][SI]基址变址寻址,EA = (BX)+(SI)= 0100H+00A0H = 01A0H,PA = (DS)×10H +EA = 2000H×10H+01A0H = 201A0H(12)MOV AX,VAL[BX][SI]相对基址变址寻址,EA = (BX)+(SI)+[V AL]= 0100H+00A0H+0050H = 01F0H,PA =(DS)×10H+EA = 2000H×10H+01F0H = 201F0H3.3 给定寄存器及存储单元的内容为:(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) = 32H,(20101) = 51H,(20102) = 26H,(20103) = 83H,(21200) = 1AH,(21201) = B6H,(21202) = D1H,(21203) = 29H。
微机原理与接口技术第3章(指令部分)
例:编程计算 0+1+2+3+4+ -----10 编程计算
MOV AL,0 , MOV BL,1 , MOV CL,10 NEXT:ADD AL,BL , INC BL DEC CL JNZ NEXT ;CL≠0 转 ≠ HLT
1
3.1 概述 一、指令包含的基本内容
12
(3)相对寻址
例: MOV AX, [SI+100H]
;结果 : 结果 AX (DS×16+SI+100H) ×
例:MOV AL,[BP+DATA] MOV AL, DATA[BP] ; DATA是符号表示的位移量。 表示的位移量 是符号表示的位移量。
结果 : AL (SS×16+BP+DATA) ×
11
(2)间接寻址 例:MOV AX,[BX] , •结果 : AX 结果 (DS×16+BX) ×
...
3000H:0000H : • EA= BX /SI /DI , 物理地址=DS*16+EA 物理地址 • EA= BP 物理地址=SS*16+EA 物理地址 :1234H :50H :1235H :30H
1. 做什么操作? 做什么操作? MOV ,ADD, OR,CMP等助记符 等助记符
2. 操作的数据是什么? ①CPU内的寄存器; 操作的数据是什么? 内的寄存器 内的寄存器; 内存的某一个或几个单元 单元; ②内存的某一个或几个单元; 结果放在那里? 3. 结果放在那里? 立即数。 ③立即数。 端口; 端口 ④I/O端口; 下一条指令在哪里? 4. 下一条指令在哪里? IP←IP+1
微机原理第3章-指令系统
▲按给出偏移地址方式的不同,分为以下5种: 寄存器间接寻址 寄存器相对寻址 基址加变址寄存器 相对基址加变址寄存器 MOV AL, [ BX ] MOV AL, [ BX + 10H ] MOV AL, [ BX + SI ] MOV AL, [ BX + SI + 10H ]
(1)寄存器间接寻址
寄存器寻址方式的操作数是寄存器的值,指令中直接 使用寄存器名,包括8位或16位通用寄存器和段寄存器。可 使用的16位寄存器:AX、BX、CX、DX、SI、DI、SP、 BP;其中:AX、BX、CX、DX可分成两8位使用。
例: MOV AX,CX
;(AX)
(CX)
INC CX
;(CX)
(CX)+1
3.直接寻址(Direct Addressing)
0002
AH
AL
默认段寄存器的关系: ① 使用BX、SI、DI,默认段寄存器为DS
(BX)
PA = ( DS )×10H + (SI) (DI)
② 使用BP,默认段寄存器为SS PA = ( SS )×10H + ( BP )
使用BX、SI、DI的寄存器寻址,默认段寄存器为DS
寄存器组 AH AL BH BL CH CL DH DL SI DI BP SP AX BX CX DX DS ES SS CS IP 地 址 加 法 器
运 算 器
控制总线CB
码
器
PSW标志 寄存器
执行部件控制电路
CPU
总线
内存
例: MOV AX , [ BX + SI ]
若 ( DS ) = 4000H
( BX ) = 2000H ( SI ) = 100H 则内存操作数的物理地址为:
微机原理与接口技术习题答案
第3章8086/8088指令系统与寻址方式习题3.3 8086系统中,设DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H,BP=0100H,VAR的偏移量为0600H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,计算它们的物理地址。
(1)MOV BX,12 ;目标操作数为寄存器寻址(2)MOV [BX],12 ;目标操作数为寄存器间址 PA=10300H(3)MOV ES:[SI],AX ;目标操作数为寄存器间址 PA=20200H(4)MOV VAR,8 ;目标操作数为存储器直接寻址 PA=10600H(5)MOV [BX][SI],AX ;目标操作数为基址加变址寻址 PA=10500H(6)MOV 6[BP][SI],AL ;目标操作数为相对的基址加变址寻址 PA=12306H (7)MOV [1000H],DX ;目标操作数为存储器直接寻址 PA=11000H(8)MOV 6[BX],CX ;目标操作数为寄存器相对寻址 PA=10306H(9)MOV VAR+5,AX ;目标操作数为存储器直接寻址 PA=10605H3.4 下面这些指令中哪些是正确的?那些是错误的?如果是错误的,请说明原因。
(1)XCHG CS,AX ;错,CS不能参与交换(2)MOV [BX],[1000] ;错,存储器之不能交换(3)XCHG BX,IP ;错,IP不能参与交换(4)PUSH CS(5)POP CS ;错,不能将数据弹到CS中(6)IN BX,DX ;输入/输出只能通过AL/AX(7)MOV BYTE[BX],1000 ;1000大于255,不能装入字节单元(8)MOV CS,[1000] ;CS不能作为目标寄存器(9)MOV BX,OFFSET VAR[SI] ;OFFSET只能取变量的偏移地址(10)MOV AX,[SI][DI] ;SI、DI不能成为基址加变址(11)MOV COUNT[BX][SI],ES:AX ;AX是寄存器,不能加段前缀3.7 设当前 SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执行PUSH BX 指令后,栈顶地址和栈顶2个字节的内容分别是什么?当前栈顶的地址=2FF00H当执行PUSH BX 指令后,栈顶地址=2FEFEH(2FEFEH)=57H(2FEFFH)=34H3.8 设DX=78C5H,CL=5,CF=1,确定下列各条指令执行后,DX和CF中的值。
微机原理 单片机 第3章 80C51的指令系统
(2)指令编码字节少。单字节指令有49 条,双字节指令有45条,三字节指令仅 有17条。 (3)位操作指令丰富,这使得80C51单 片机的控制功能方便灵活。
<
>
返回
三、指令编码格式
[标号]: 操作码 [目的操作数] [,源操作数] [;注释]
标号:表示指令的符号地址,可作为转移的目 标地址。 操作码:用来规定该指令要执行的操作性质, 如MOV,ADD,ORL,LJMP等,操作码通常可用1个 字节表示。 操作数:表示在执行过程中所完成的操作对象, 根据指令功能,可有0、1、2、3个操作数,用12个字节表示。 注释:方便用户阅读。
< > 返回
二、指令分类
80C51单片机系统共有111条指令,按指令 功能分为: ♦数据传送(28条) ♦算术运算(24条) ♦逻辑运算(25条) ♦控制转移(17条) ♦位操作指令(17条) 其指令系统的特点是: (1)执行时间短。单机器周期指令有64条,双 机器周期指令有45条,而四机器周期指令仅有 乘、除法2条。当主频为12MHz时,典型指令执 行时间为1us。
+5V C3 K R1 RST
89C51
相应程序:MOV P1,#00H;灯亮
ACALL delay ;延时 MOV P1,#01H;灯灭 ACALL delay
学习指导和要求
• 理解和掌握指令的 三种编码格式; • 熟练掌握七种寻址 方式; • 熟记各种类型的指 令格式及功能,并 能编写简单程序。
80C51的机器指令按编码的字节数可分为 如下三种指令编码格式:
1、单字节指令(49条)
7 0
opcode 7 opcode 3 2 reg 0 0 0 0 0 1 1 1 1
微机原理第3章2
(2)使CX的b11, b7, b3 位清零。
(3)测试DX的b0 、 b8 位是否同是1.
(4 )以下可使寄存器AX和CF同时清零的指令 是
A. SUB AX, AX B. XCHG AX, AX
C. PUSH AX
D. XOR AX, AX
21
例3—28 统计负数的个数
从4000 H开始的单元中存放有32个有符号数, 统计负数的个数,存人 BUFFER单元中。
格式:
NOT OPRD
操作:
操作数按位取反再送回原操作数
注:
指令中的操作数不能是立即数,只能是 MEM/REG
指令的执行对标志位无影响
例:NOT BYTE PTR[BX] 16
(4)“异或”运算指令
格式:
XOR OPRD1,OPRD2
操作:
两操作数相“异或”,结果送目标地址
AL
00011010
CF
0
CF
0
CF
0
29
(3) 算术右移指令SAR
格式: SAR OPRD,I SAR OPRD,CL
有符号数 的右移
CF
30
算术右移 符号位保持不变
31
非循环移位指令的应用
左移可实现乘法运算 右移可实现除法运算
32
例3-30 16位无符号数 乘以10
8086指令系统(2)
1
三、逻辑运算和移位类
逻辑运算
移位操作
非循环移位 循环移位
2
逻辑运算和移位指令
3
指令类型
逻辑运算
与,或,非,异或
移位操作
非循环移位,循环移位
4
1、逻辑运算指令
逻辑运算指令对操作数的要求大多与ADD指令相同 。“非”运算指令要求操作数不能是立即数;(“非” 指令同INC,其他指令搭配规则同ADD)
微机原理 3-3指令系统Ⅱ算术上
(3) 主要用于多字节运算中,可以将低字节运算的进 主要用于多字节运算中, 位加入到高字节运算中. 位加入到高字节运算中.
(4) 带符号数和无符号数都溢出
二进制数 1 0 0 0 0 1 1 1 相 加 + 1 1 1 1 0 1 0 1 + 看作无符号数 135 245 + 看作带符号数 - 121 - 11
CF=1
0 1 1 1 1 1 0 0 CF=1,OF=1
380 CF=1
- 132 OF=1
标志
溢出
无符号数溢出
溢出 现结果为 124, 124, 结果错
溢出 现结果为124 124, 现结果为 124 , 结果错
微机原理与接口技术 2、带进位加法指令ADC 带进位加法指令ADC 格式> dest, <格式>:ADC dest,src
第3章 指令系统 Ⅱ
<功能>:(dest)←(dest)+(src)+CF 功能>: dest) >:( dest) src) <注解>: 注解>: (1) CF: 进位标志CF的现行值(上条指令CF值) 进位标志CF的现行值(上条指令CF CF的现行值 CF值 (2)合法形式有 (2)合法形式有: 合法形式有:
微机原理与接口技术 计算 3B74AC60F8H+20D59E36C1H=? 3B74AC60F8H+20D59E36C1H=? 两数存放在:DATA1,DATA2的开始单元 两数存放在:DATA1,DATA2的开始单元
微机原理第3章指令
第3章指令系统机器指令:能指示计算机完成基本操作的二进制代码指令系统:CPU可执行的机器指令的集合。
为了方便编程,人们又把完成特定操作的机器码用特定的符号表示,这就产生了符号表示的机器指令-------指令助记符。
第3章8086指令系统机器指令由二进制代码组成,一条指令包括操作码和操作数(或地址)两部分,操作码指明该指令进行何种操作,操作数用来说明操作对象。
个别指只有操作码没有操作数。
由于不同的指令所表达的信息不尽相同,因此指令的长度即机器码字节数也有长有短。
8086指令系统的指令是可变长指令(1~6个字节)3.18086CPU寻址方式重点是存储器寻址存放在存储器中的数据称为存储器操作数。
指令中需要确定存储单元的段地址、偏移地址(亦称有效地址EA),以及存储器操作数的类型。
段地址存放在段寄存器中,确定段地址实际上就是确定段寄存器,采用的方法是默认或添加段超越前缀。
生成存储器有效地址有多种方法,这些方法形成了对存储器操作数的多种寻址形式。
确定数据类型的方法是源操作数和目的操作数类型一致原则或附加类型说明。
立即寻址方式中操作数也在存储器中,但立即寻址中的立即数包含在指令中,随程序存放在代码段,CPU在取指令时就获得操作数。
这里所说的存储器操作数是存放在数据段、附加段或堆栈段中,取指令时也不会被立即取到。
段超越前缀变量的定义在第四章详细介绍直接寻址:MOV AX,[2000H];寄存器间接寻址:MOV ES:[DI],AH基址寻址:MOV BYTE PTR[BX+1200H],10变址寻址:MOV DL,[SI+2AH]基址加变址寻址:MOV CL,[BX+SI+5]MOV AX,[BP+DI]MOV CL,[BX+SI+5]的等价形式:MOV CL,5[BX][SI]、MOV CL,5[BX+SI]、MOV CL,[BX][SI+5]MOV CL,[BX+SI-5]等价于MOV CL,[BX+SI+65531] MOV CL,[BX-SI]MOV CL,[SI+DI]错误!MOV[BX+DI],1000H正确吗?3.2.1数据传送类指令传送指令把数据从一个位置传送到另一个位置使用MOV指令应注意1.立即数只能作为源操作数2.无存储器之间直接传送与交换的指令3.没有用立即数对段寄存器直接赋值的指令4.段寄存器之间无传送指令5.两个操作数的类型要一致6.要能确定是字节还是字操作mov ah,al mov bvar,ch mov ax,bx mov ds,ax mov al,[bx]下列MOV指令正确吗?MOV AL,050AHMOV SI,DLMOV[BX+SI],255MOV DS,100HMOV[BX],[SI]MOV[BX+SI],bvarbvar是一个已定义过的字节变量 MOV CS,[SI]将数据段中偏移地址为2000H、2001H、2002H的3个字节的存储单元置数FFH。
单片机与微机原理及应用课后答案(张迎新等)电子工业出版社
第二章单片机结构及原理1、MCS-51 单片机内部包含哪些主要功能部件它们的作用是什么答:(1)一个8bit CPU 是微处理器的核心,是运算和逻辑计算的中心。
(2)片内震荡器及时钟电路:提供标准时钟信号,所有动作都依据此进行。
(3)4K ROM 程序存贮器:存贮程序及常用表格。
(4)128B RAM 数据存贮器:存贮一些中间变量和常数等。
(5)两个16bit 定时器/计数器:完全硬件定时器(6)32 根可编程I/O 口线:标准8 位双向(4 个)I/O 接口,每一条I/O 线都能独立地作输入或输出。
(7)一个可编程全双工串行口。
(8)五个中断源。
2、什么是指令什么是程序答:指令是规定计算机执行某种操作的命令。
程序是根据任务要求有序编排指令的集合。
3、如何认识89S51/52 存储器空间在物理结构上可以划分为 4 个空间,而在逻辑上又可以划分为3 个空间答:89S51/52 存储器空间在物理结构上设有4个存储器空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。
在逻辑上有3个存储器地址空间:片内、片外统一的64KB 程序存储器地址空间,片内256B数据存储器地址空间,片外64KB的数据存储器地址空间。
4、开机复位后,CPU 使用的是哪组工作寄存器他们的地址是多少CPU 如何确定和改变当前工作寄存器组答:开机复位后,CPU 使用的是第0 组工作寄存器,地址为00H~07H,CPU 通过改变状态字寄存器PSW中的RS0 和RS1 来确定工作寄存器组。
5、什么是堆栈堆栈有何作用在程序设计时,有时为什么要对堆栈指针SP 重新赋值如果CPU 在操作中要使用两组工作寄存器,SP 应该多大答:堆栈是一个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。
堆栈指针SP复位后指向07H 单元,00H~1FH 为工作寄存器区,20H~2FH 为位寻址区,这些单元有其他功能,因此在程序设计时,需要对SP 重新赋值。
003_微机原理-指令系统_2
MOV DS, AX
不影响标志位
3.3 指令系统—换码指令
指令书写格式: XLAT
指令执行的操作:
(AL)←((DS:BX+AL)) 查表操作,将BX指定的缓冲区中、AL指定的位移处的一个字节数 据取出赋给AL
指令说明
操作数隐含使用基地址寄存器BX与AL寄存器 换码指令执行前,在主存建立一个字节量表格,内含要转换的目 的码字,表格首地址存放于BX,AL存放相对表格首地址的位移量 换码指令执行后,指令将AL寄存器的内容转换为目标码字,因为 偏移量AL为8位,表格长度≤256字节 不影响标志位
数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令
控制转移指令
处理器控制指令
3.3 指令系统-通用数据传送指令
指令书写格式: MOV dst, src
指令执行的操作:(dst)←(src) 指令说明
操作数类型:立即操作数,寄存器操作数,存储器操作数 立即操作数不能作为目的操作数DST 错误:MOV 30H, AL 两个操作数也不能同时为存储器操作数 错误: MOV [DI+100H], [SI+200H]
dst为目的操作数,操作数类型可为寄存器操 作数或存储器操作数 cnt为移位次数,可为立即数1,或由寄存器 CL指定 SHL、SHR和SAL指令影响标志位CF和OF, cnt=1时,SHL与SAL移位后的最高位和CF不 同,则OF=1;SHR,OF=移位前最高位 SAR指令影响标志位CF、OF、PF、SF、ZF, AF不确定;
; 测试AL中数据的奇、偶
3.3 指令系统-移位指令
逻辑左移指令: SHL dst, cnt 算术左移指令: SAL dst, cnt
微型计算机基本原理与接口技术(第二版)教学课件ppt作者陈红卫主编第三章
MOV BL,39H ADD AL,BL AAA
微机原理
② AAS 减法的ASCII码调整指令 指令格式: AAS 执行操作:AL←把减法结果AL的内容调整到 非压缩的BCD码格式 AH←AH - 调整所产生的借位值 标志位的影响:AF、CF
微机原理
3.1.6 转移类指令的寻址方式 1.段内相对转移寻址 有效地址EA为当前IP寄存器内容与指令中指定 的8位或16位有符号数之和 例:JZ DISP 其中DISP是符号地址 2.段内间接转移寻址 有效地址EA为寄存器或存储器单元的内容,这种 寻址方式不能用于条件转移指令。 例:JMP CX
微机原理
3.1.3 寄存器寻址方式 寄存器寻址:操作数存放在CPU内部的寄存器中 例 :MOV AX,DX ; AX←DX 3.1.4 寄存器间接寻址 寄存器间接寻址:有效地址包含在基址寄存器 BX、BP或变址寄存器SI、DI中直接寻址 例 MOV AX,[BX]
MOV AX,[BP] 3.1.5 寄存器相对寻址 寄存器相对寻址方式:有效地址在SI、DI、BX 或BP之一,加上指令中8位或16位相对地址 例 MOV AL,ADDR[SI]
3.2 8086/8088 CPU的指令系统 微机原理
3.2.2 算术运算指令
1.加法指令 ⑴ ADD 不带进位加法指令 指令格式:ADD DST,SRC 执行操作:(DST)←(SRC)+(DST)。 对标志位的影响:OF、SF、ZF、AF、PF、CF。
存储器 通用寄存器 立即数
存储器 通用寄存器 立即数
OR AL,20H 执行上述指令后AL=?
⑶逻辑非NOT 指令 指令格式:NOT OPR 执行操作: (OPR)←(OPR) 影响的标志位:无
《微机原理及应用》各章习题参考答案
《微机原理及应用》各章习题参考答案第1章微型计算机概论一、填空题1. 微机硬件系统主要由CPU、(存储器)、(总线)、(输入输出接口)和输入输出设备组成。
2. 冯·诺依曼计算机的核心原理是(存储程序原理)3. 完成下列数制的转换1)10100110B=( 166 )D=( A6H )H2)223.25 =( 11011111.01 )B=( DF.4 )H3)1011011.101B=( 5B.A )H=(1001 0001.01100010 0101 )BCD4. 已知[X]补5. 已知A=10101111,B=01010000,则A∧B的结果为( 00000000 ) B=86H,则X的十进制表示形式为( -122 )6. -29H的8位二进制反码是(11010110 )B7.字符4的ASCII码=( 34 )H二、简答题1.冯.诺依曼计算机的结构是怎样的,主要特点有哪些?解:将计算机设计为由运算器、控制器、存储器、输入设备和输出设备等5个部分组成,所有的执行都以运算器为核心,采用存储程序工作原理。
2. 已知X=-1101001B,Y=-1010110B,用补码方法求X-Y=?解:[X-Y]补=[X+(-Y)]补= [X]补+[-Y] [X]补原=11101001B [X]补 [-Y]=10010111B原=01010110B=[-Y] [X-Y]补补= [X]补+[-Y]补X-Y=[[X-Y]=11101101B补]补=10010011=-0010011=-193. 写出下列真值对应的原码和补码的形式:1)X=-1110011B2)X=-713)X=+1001001B解:1)[X]原码=11110011B , [X]补码=10001101B2)[X]原码=11000111B, [X]补码=10111001B3)[X]原码=01001001, [X] 补码=01001001B=?4. 已知X和Y的真值,求[X+Y]补1)X=-1110111B Y=+1011010B2)X=56 Y=-215. 若与门的输入端A、B、C的状态分别为1、0、1,则该与门的输出端状态为?若将这3位信号连接到或门,那么或门的输出又是什么状态?解:由与和或的逻辑关系知,若“与”门的输入端有一位为“0”,则输出为“0”;若“或”门的输入端有一位为“1”,则输出为“1”。
微机原理 第三章1
(2)立即(数)寻址
② MOV AX,1234H
说明:这条指令的功能就是将立即数 1234H传送到寄存器AX中。 执行完该条指令后, AX=1234H
(3)寄存器寻址(Segment Addressing)
当操作数在寄存器中时为寄存器寻址(或称寄 存器直接寻址)。如: ① MOV AL,12H 说明:目的操作数AL即为寄存器寻址。
DS(BX的默认段)值
0000
Memory
ES值
SS(BP的默认段)值
CS值
BP: +)位移量:
0000 0000 0000
…… ××
0100 0000 0000 0000 0000 0000 0000 0010
20 位 物 理 地 址
MOV [SI]10 ,AH ( 设SI原值为008CH)
Bit 19 4 3 0
1、通用数据传送指令
(1)MOV指令 (2)PUSH和POP指令 (3)交换指令XCHG (4)换码指令XLAT
(1)MOV指令
是基本传送类指令,实现字或字节数据的 复制。
指令格式:MOV dst,src
指令功能:将源操作数src,传送到目的操作 数dst中。 如:MOV AL,12H
功能:执行指令就是将立即数12H传送到 AL中,执行完指令后AL=12H。
(6)寄存器相对寻址方式 使用基址寄存器(BX或BP)、并带位移 量的间接寻址。操作数EA=BX或BP值+位 移量。 例:MOV DL,[BP+2] 其它等效写法: MOV DL,[BP] 2 MOV DL,2 [BP]
MOV DL,[BP+2] ( 设BP原值为4000H)
Bit 19 4 3 0
汇编语言 用指令助记符表示机器码,例如对应于机器码 B8H、C3H的助记符为MOV AX,BX 。 CPU不同,机器码不同,助记符也不同。
《微机原理与接口技术》徐惠民 微机原理与接口技术3章
数据传送指令
③ 两个段寄存器之间不能直接传送信息,也不允许 用立即寻址方式为段寄存器赋初值; (X) MOV DS, 100H; (X) MOV DS, ES;
④ 目的操作数,不能用立即寻址方式。
⑤ MOV指令不影响标志位
数据传送指令
2.堆栈指令
功能:从I/O端口输入数据至AL或AX.
输入指令允许把一个字节或一个字 由一个输入端口传送到AL或AX中。若端 口地址超过255时,则必须用DX保存端 口地址,这样用DX作端口寻址最多可寻 找64K个端口。
8086/8088通过 输入输出指令与 外设进行数据交 换;呈现给程序 员的外设是端口 (Port)即I/O地 址。
一般格式:
LES OPRD1,OPRD2
这条指令除将地址指针的段地址部分送入ES外,与 LDS类似。
例如: LES DI,[BX]
数据传送指令
6.标志寄存器传送(有四条标志传送指令)
⑴ LAHF (LOAD AH WITH FLAG) 将标志寄存器中的S、Z、A、P和C(即低8 位)传送至AH寄存器的指定位,空位没有定 义。
2、寄存器寻址
操作数就放在CPU的内部寄存器中,AX、BX、CX、DX、 DI、SI、SP和BP,不需要访问存储器。
例:INC CX MOV AX,BX 若执行前 AX =30A6H, BX =69EDH, CX =40D9H 则执行后 AX =69EDH, BX内容不变 CX =40DAH
3.1 8088/8086的寻址方式
– 操作数是指令执行的参与者,即各种操作的对象。 – 有些指令不需要操作数,通常的指令都有一个或两
个操作数,也有个别指令有3个甚至4个操作数。
微机原理与接口技术第三章试题及答案
第三章3-1选择题1、MOVX A,@DPTR指令中源操作数的寻址方式是(B)(A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址2.ORG 0003HLJMP 2000HORG 000BHLJMP 3000H 当CPU响应外部中断0后,PC的值是(B)(A)0003H (B)2000H (C)000BH (D)3000H3.执行PUSH ACC指令,MCS-51完成的操作是(A)(A)SP+1 SP (ACC)(SP)(B)(ACC)(SP)SP-1 SP(B)(C)SP-1 SP (ACC)(SP) (D)(ACC)(SP)SP+1 SP4、LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=(D)(C)2000H (B)2001H (C)2002H (D)2003H5、51执行完MOV A,#08H后,PSW的一位被置位(D)(A)(A)C (B)F0 (C)OV (D)P6、下面条指令将MCS-51的工作寄存器置成3区(B)(A)MOV PSW,#13H (B)MOV PSW,#18H(B)SETB PSW.4 CLR PSW.3 (d) SETB PSW.3 CLR PSW.47、执行MOVX A,DPTR指令时,MCS-51产生的控制信号是(C)(D)/PSEN (B)ALE (C)/RD (D)/WR8、MOV C,#00H的寻址方式是(A)(A)位寻址(B)直接寻址(C)立即寻址(D)寄存器寻址9、ORG 0000HAJMP 0040HORG 0040HMOV SP,#00H当执行完左边的程序后,PC的值是(C)(A)0040H (B)0041H (C)0042H (D)0043H10、对程序存储器的读操作,只能使用(D)(A)MOV指令(B)PUSH指令(C)MOVX指令(D)MOVC指令3-2判断题。
4.MCS-51的相对转移指令最大负跳距是127B。
微机原理与接口技术(楼顺天)-第3章4资料讲解
3.5 算术运算类指令
(三)取负指令(NEG) Negate byte or word
格式:
NEG DST
;(DST) ←0-(DST)
说明:
DST可以取通用寄存器和存储单元。NEG指令
影响PSW中的6个状态标志位.
13
3.5 算术运算类指令
例如,设(AL)=01H,则执行指令 NEG AL 后,
5
3.5 算术运算类指令
例3.2 设在DVAR开始的连续8字节中分别存
放着两个数A和B(每个数为32位),求
C=A+B,并将结果C放到DVARC开始的内
存解中:。设这两个数分别为A=00127654H、
B=00049821H,则在数据段中有变量定义语
句:
DVAR DD 00127654H
DD 00049821H
SF=1,这说明-113<-104。 19
3.5 算术运算类指令
三、增量减量指令
格式:
INC DST
; (DST) ← (DST)+1
DEC DST
; (DST) ← (DST)-1
说明: INC和DEC指令可以正常影响PSW中的5个标志 位:AF、OF、SF、ZF和PF,但它们不会影响CF 位。
当两个有符号数进行比较时,OF=1表 示运算产生了溢出,但大小的比较要根据 OF和SF共同来决定,
当OFSF=0时,(DST)>(SRC), 当OFSF=1时,(DST)<(SRC)。
17
3.5 算术运算类指令
例: 两个无符号数(AL)=49H、(BL)= 28H进行大小比较。 解:指令段为:
MOV AL, 49H MOV BL, 28H CMP AL, BL 执行后,CF=0,ZF=0,说明49H>28H。 如果采用CMP BL,AL语句,则CF=1, 说明28H<49H。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
16
表3-6 算术运算指令
加法 ADD ADC INC AAA 加法 带进位的加法 增量 加法的ASCII调整 SUB SBB DEC NEG 减法 减法 带借位的减法 减量 取负
DAA
DIV IDIV AAD CBW
加法的十进制调整
除法 无符号数除法 整数除法 除法的ASCII调整 把字节转换成字
CMP
AAS DAS MUL IMUL
比较
减法的ASCII调整 减法的十进制调整 乘法 无符号数乘法 整数乘法
CWD
把字转换成双字
AAM
乘法的ASCII调整
17
例3-31 ADD AL,18H ADC AL,CL
ADC AX,DX
ADD AL,COST[BX] ADD COST[BX],BL
18
例3-32 对两个数5EH和3CH求和,并分析加法运算 指令执行后对标志位的影响。 MOV AL,5EH 0101 1110 MOV BL,3CH + 0011 1100 ADD AL,BL 1001 1010 运算后标志位: ZF=0-----零标志,运算结果非零 AF=1----半进位标志,产生进位为1 CF=0----进位标志,未产生进位为0 SF=1-----符号标志 PF=1-----奇偶标志,结果中有偶数个1为1 OF=1-----溢出标志,符号相同结果相反。
8
例3-23 下面是IN指令的具体例子。 IN AL,0F1H ;AL←F1H端口读一个字节 IN AX,80H ;AL←80H口的内容 ;AH←81H口的内容 MOV DX,310H ;端口地址310H→DX中 IN AL,DX ;AL←310H端口内容 例3-24 IN指令中也可以使用符号表示地址。 ATOD EQU 54H ;将A/D地址设为54H IN AL,ATOD;将54H→AL中
输入输出指令
2
立即数 存 储 器 段寄存器 CS,DS,ES,SS
通用寄存器
AX BX CX DX SI DI SP BP AH AL BH BL CH CL DH DL
图3-8 MOV指令允许传送数据的路径
3
例3-15 MOV AL,‘B’ ;ASCII码B→AL。 例3-16 MOV AX,DATA MOV DS,AX 注意:16位立即数不能被直接送到 DS(段寄存器)中。
7
例3-22 若十进制数字0~9的LED七段码对照如表34所示。试用XLAT指令求数字5的七段码值。
十进制数字 七段显示码 十进制数字 七段显示码 0 1 2 3 4 40H 79H 24H 30H 19H 5 6 7 8 9 12H 02H 78H 00H 18H
TABLE DB 40H,79H,24H,30H,19H DB 12H,02H,78H,00H,18H ….. MOV AL,0 MOV BX,OFFSET TABLE XLAT TABLE
第三章 8086寻址方式和 指令系统(2)
1
表3-3 数据传送指令 通用数据传送指令
MOV PUSH POP XCHG XLAT IN OUT 字节或字传送 入栈指令 出栈指令 交换字或字节 表转换 输入 输出 LAHF SAHF PUSHF POPF LEA LDS LES
地址目标传送指令
装入有效地址 装入数据段寄存器 装入附加段寄存器 标志传送指令 标志寄存器低字节装入AH AH内容装入标志寄存器低字节 标志寄存器入栈指令 出栈,并送入标志寄存器
DI
2000:0046
2000:0040
FE
25
20 31
偏 移 量
根据右图所示BX=0046H
12
例3-29 设DS=1200H, (12450H)=F346H, (12452H)=0A90H 执行指令 LDS SI,[450H]后, SI=F346H,DS=0A90H
1200:0000
执行前DS
执行前DS
0100:0020 00 03
偏 移 量
常 用
执行后DI
03 00
执行后ES
05 00
00 05
14
(1)LAHF标志送到AH指令
15
11 10 O D
9 I
8 T
7 S
6
5
4
3
2
1
0
Z × A × P × C
FLAGS AH
15
算术运算指令可处理4种类型的数:见表3-5。
表3-5 4种类型数的表示方法 二进制数 (B) 0000 0111 1000 1001 1100 0101 十六进制 (H) 07 89 C5 无符号二 进制(D) 7 137 197 带符号二 进制(D) +7 -119 -59 非压缩 十进制 7 无效 无效 压缩 十进制 07 89 无效
103
103
溢出
运算后标志位ZF=0,AF=1,CF=0,SF=0,PF=0, OF=1。
29
例3-45 若AL=BCD 3,CL=BCD 8,求两数之差。 显然结果为BCD 5,但有借位,运算过程如下:
SUB AL,CL ; 0000 0011….3 ; - 0000 1000….8 ;--------------------AAS ; 1111 1011….低4位 >9 ; - 0000 0110…减6调整 ;--------------------; 1111 0101 ; ∧ 0000 1111…清高4位 ;---------------------; 0000 0101….AL=5 ;结果为5,CF=1,表示有借位
9
例3-25 下面是OUT指令的具体例子。
OUT 85H,AL
;85H端口←AL内容
MOV DX,0FF4H
OUT DX,AL
;FF4H端口←AL内容
MOV DX,300H ;端口地址310H→DX中
OUT DX,AX
;300H端口←AL内容
;301H端口←AH内容
10
例3-26 设SI=1000H,DS=5000H,(51000H)=1234H
STRING
4
例3-17 MOV DX,OFFSET ARRAY OFFSET为属性操作符,表示把 ARRAY的地址值→DX中。DX=0005 例3-18 MOV AL,AREA1 ;AL←AREA1的内容14H MOV AREA2,AL ;0002H单元←14H 例3-19 MOV AX,TABLE[BP][DI] 将地址为16×SS+BP+DI+TABLE的 字存储单元中内容送进AX。
24
例3-39 SUB AX,BX ;AX←AX-BX SUB DX,1850H ;DX←DX-1850H SUB BL,[BX] ;BL-DS:(BX)→BL 例3-40 SBB AL,BL
;AL←AL-BL-CF
25
例3-41 DEC BX ;BX←BX-1 DEC WORD PTR[BP] ;堆栈段中位于[BP]偏置处的的字减1。
26
例3-42 NEG AX ;将AX中的数值取负(正数变负数,负数变正数) NEG BYTE PTR[BX] ;对数据段中位于[BX]偏置处的字节取负。
27
例3-43 CMP AL,80H ;AL与80H作比较 CMP BX,DATA1 ;BX与数据段中偏移量为DATA1处的字比较 比较指令主要用在希望比较两个数的大小,而 又不破坏原操作数的场合。
执行指令 LEA BX,[SI]后,BX=1000H
执行指令 MOV BX,[SI]后,BX=1234H 有时,LEA指令也可用取偏移地址的MOV指令代。 例3-27 LEA BX,TABLE
MOV BX,OFFSET TABLE
但有时,必须用LEA指令,不能用MOV取代。
11
例3-28 某数组含20个元素,每 个元素占一个字节,序号为0~19。 设DI指向数组开始,如要把序 号6的元素的偏移地址送到BX中, 不能直接用MOV指令实现。 LEA BX,6[DI]
2000:0000 2000:0000 2000:0000 2000:0000
2000:003C
FE 25
←SP
FE 25 2000:003E 20
2000:003E
20
←SP
20
←SP
31
2000:0040 ←SP 2000:0040 2000:0040
31
2000:0040
31
6
例3-21
XCHG AX,[BX+200H]
19
例3-33 下面是INC指令的两个应用的例子。
INC BL
INC CX
例3-34
INC BYTE PTR[BX] INC WORD PTR[BX]
20
例3-35 若AL=BCD 9,BL=BCD 5,求两数之和。 设AH=0,则运算过程如下:
ADD AL,BL ; 0000 1001….9 ; + 0000 0101….5 ;--------------------AAA ; 0000 1110…低4位 >9 ; 0000 0110…+6调整 ;--------------------; 0001 0100 ; ∧ 0000 1111…清高4位 ;---------------------; 0000 0100….AL=4 ;CF=1,AF=1,AH=1,结果AX=0104H,非压缩BCD14
28
例3-44 设AL=1011 0001B,DL=0100 1010B, 若 要求AL-DL,在执行SUB AL,DL的结果取决于运 算数的性质。运算过程如下:
二进制减法 1011 0001 — 0100 1010 当成无符号数 177 — 74 当成带符号数 -79 — 74