微机原理第三章最终修改
微机原理与接口技术 第三章 课后答案
第三章参考答案1.按照题目中提出的要求,写出能达到要求的一条(或几条)汇编形式的指令:⑴将一个立即数送入寄存器BX;⑵将一个立即数送入段寄存器DS;⑶将变址寄存器DI的内容送入一个存储单元中;⑷从存储单元中取一个数送到段寄存器ES中;⑸将立即数0ABH与AL相加,结果送回AL中;⑹把BX与CX寄存器内容相加,结果送入BX;⑺用寄存器间接寻址方式,实现一个立即数与存储单元内容相加,结果放回存储器。
解:(1)MOV BX, 1234H(2)MOV AX, 1234HMOV DS, AX(3)MOV [BX], DI(4)MOV ES,[BX](5)ADD AL,0ABH(6)ADD BX,CX(7)MOV AX,[BX]ADD AX,1234HMOV [BX],AX2.执行下面程序,完成指令后的填空:MOV AX,2000H ;AH= 20HMOV DS,AX ;AL= 00H DS= 2000HMOV SS,AX ;SS= 2000H AX= 2000HMOV BX,2030H ;BH= 20H BL= 30HMOV SI,BX ;SI= 2030HMOV DI,3040H ;DI= 3040HMOV SI,DI ;SI= 3040HMOV SP,50FFH ;SP= 50FFHMOV DX,SP ;DH= 50H DL= FFHMOV CL,25 ;CL= 19HMOV BL,CL ;CL= 19H BL= 19HMOV AH,0F0H ;AH= F0HMOV CH,AH ;CH= F0HMOV BYTE PTR[DI],64 ;(DI)= 40HMOV WORD PTR[SI],256 ;(SI)= 00H (SI+1)= 01HMOV DL,[SI+1] ;DL= 01HMOV DH,1+[SI] ;DH= 00HMOV AL,1[SI] ;AL= 01HMOV WORD PTR[BX][SI],34 ;(BX+SI)= 22H (BX+SI+1)= 00HMOV [BX+SI+4],BL ;(BX+SI+4)= 19HMOV BP,2[BX+DI] ;BP= 00HMOV [BP],AL ;(BP)= 01HMOV AX,[BP][DI] ;AX= 0100HMOV BL,AL ;BL= 00HMOV ES,BX ;ES= 2000HPUSH BX ;SP= 50FDH (SP,SP+1)= 2000HPUSH DI ;SP= 50FBH (SP,SP+1)= F019HPOP CX ;SP= 50FDH CX= 3040HPOP DX ;SP= 50FFH DX= 2000HXCHG AX,BP ;AX= 0000H BP= 0100HXCHG DH,BL ;DH= 00H BL= 20HLAHF ;FLAG= 0002H AH= 02HSAHF ;FLAG= 0002H AH= 02HPUSHF ;SP= 50FDH (SP,SP+1)= 0002HPOPF ;SP= 50FFH FLAG= 0002H3.设DS=2000H,ES=2100H,SS=1500H,SI=00A0H。
微机原理第三章作业答案
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。
微计算机原理(第2版)第三章课后习题答案解析讲课讲稿
微计算机原理(第2版)第三章课后习题答案解析讲课讲稿微计算机原理(第2版)第三章课后习题答案解析第三章 80x86 指令系统3-1 指令由操作码字段和操作数字段组成。
8086的指令长度在1~6字节范围。
3-2 分别指出下列指令中源操作数和目的操作数的寻址方式。
若是存储器寻址,使用表达式表示出EA=? PA=?(1) MOV SI, 2100H (2) MOV CX, DISP[BX] (3) MOV [SI], AX (4) ADC ZX, [BX][SI] (5) AND AX, DX (6) MOV AX,[BX+10H](7) MOV AX, ES:[BX] (8)MOV AX, [BX+SI+20H] (9) MOV [BP], CX (10) PUSH DS解:3-3 已知8086中一些寄存器的内容和一些存储器单元的内容如图3-1所示,试指出下列各条指令执行后,AX中的内容。
(1)MOV AX, 2010H (2) MOV AX, BX (3) MOV AX, [1200H](4)MOV AX, [BX] (5) MOV AX, 1100H[BX] (6) MOV AX, [BX][SI](7)MOV AX, 1100H[BX+SI] (8) MOVLEA AX, [SI]解:(1)(AX)=2010H (2)(AX)=0100H (3)(AX)=4C2AH (4)(AX)=3412H(5)(AX)=4C2AH (6)(AX)=7856H (7)(AX)=65B7H (8)(AX)=0002H图3-1 3-4 已知(AX)=2040H,(DX)=380H,端口(PORT)=(80H)=1FH,(PORT+1)=45H,执行下列指令后,指出结果等于多少?解:(1)OUT DX, AL (0380H)=40H(2)OUT DX, AX (380H)=40H (381h)=20H(3)IN AL, PORT (AL)=1FH(4)IN AX, 80H (AX)=451FH(5)OUT PORT1, AL (PORT1)=40H(6)OUT PORT1, AX (PORT1)=2040H3-5 已知:(SS)=0A2F0H,(SP)=00C0H,(AX)=8B31H,(CX)=0F213,试画出下列指令执行到位置1和位置2时堆栈区和SP指针内容的变化示意图。
微机原理讲义(第三章)
高地址
OP 64 30
注意:
• • • • 8位或16位 只能是整数类型的源操作数 主要用来给存储器或寄存器赋初值 速度快
3、寄存器寻址方式
寄存器寻址是指寻找的操作数在某个通用寄存 器中(8位或16位)。不需使用总线周期。 例 MOV MOV AX,BX CL,AH
4、存储器寻址方式
例:
设DS=1200H, BX=05A6H, SS=5000H, BP=40A0H, SI=2000H, DI=3000H, 位移量disp=1618H 试判断下列指令的寻址方式,并求出在各 种寻址方式下的EA和PA,并说明指令执 行的结果。
设DS=1200H, BX=05A6H, BP=40A0H, SI=2000H, 位移量disp=1618H • MOV AX , [0618H]
当EU需要读/写位于存储器的操作数时: ①根据寻址方式,由EU计算出操作数地址的偏移 量,即有效地址EA. ②将EA送至BIU单元,同时请求BIU执行一个总 线周期。 ③BIU将某个段寄存器的内容左移4位,加上EU 送来的EA,得到20位的物理地址PA. ④执行总线周期,读/写指令所需的操作数。
4-1、直接寻址
第3章 80X86/Pentuim指令系统
3-1 80X86/Pentium 指令格式和寻址方式 3-2 8086/8088 指令系统 3-3 80X86/Pentium指令系统
第3章 80X86/Pentuim指令系统
指令是计算机执行某种操作的命令。计算机为了 完成不同的功能而要执行不同的指令。一台计 算机能够识别和执行的全部指令称为该计算机 的指令系统或指令集。 不同的微处理器有不同的指令系统, 80X86/Pentium系列微处理器的指令集是在 8086/8088CPU指令系统上发展起来的。
微机原理第三章习题参考答案
1.(1)MOV DS,1000H 错立即数不能直接存入段寄存器改为:MOV AX,1000HMOV DS,AX(2)MOV [100],23H 错两个操作数必须有一个是寄存器操作数改为:MOV BX,100MOV [BX],23H(3)ADD AX,[BX+BP+6] 错基址变址寻址的时候必须用指定的基址和变址寄存器改为:ADD AX,[BX+SI+6](4)PUSH DL 错入栈操作以字为单位改为:PUSH DX(5)IN AX,[3FH] 错对于IO地址应该用立即数表示改为:IN AX,3FH(6)OUT 3FFH,AL 错超过8位的IO地址应该用短格式改为:MOV DX,3FFHOUT DX,AL(7)LES SS,[SI] 错段寄存器不能作为目的操作数改为:LES BX,[SI](8)POP [AX] 错基址寻址不能用AX寄存器改为:POP AX 或者POP [BX](9)IMUL 4CH 错立即数不能作为乘法指令操作数改为:MOV BL,4CHIMUL BL(10)SHL BX,5 错当逻辑操作的位数大于1时,应该用CL来指示次数改为:MOV CL,5SHL BX,CL(11)INT 300 错8086的中断区间是0~255改为:INT 25H(12)XCHG DX,0FFFH 错XCHG指令不能用立即数作为操作数改为:MOV BX,0FFFHXCHG DX,BX3.功能MOV AX,0 ;将0赋值给AXLEA AX,[0000H] ;将偏移地址0000H 送到AX 中LDS AX,MEM32 ;mem32中的低地址中的值是0000HLES AX,MEM32 ; mem32中的低地址中的值是0000HSUB AX,AX ;AX 自己减自己AND AX,0000H ;AX 与0000相与XOR AX,AX ;AX 和自己异或SAL AX,CL ;当CL=16时清零。
功能是将AX 左移16位SAR AX,CL ;当CL=16且AX 最高位为0时清零。
《微机原理及接口技术》第三章
输入输出接口的种类繁多, 常见的有串行接口、并行 接口、USB接口等。
ABCD
常见的输入设备包括键盘、 鼠标、扫描仪等,输出设备 包括显示器、打印机等。
输入输出接口的性能指标 包括传输速度、数据格式 和兼容性等。
总线
01
总线是微机中各部件之间传输信 息的公共通道。
02
总线分为数据总线、地址总线和 控制总线,分别传输数据、地址
汇编语言程序设计的风格
良好的编程风格可以提高代码的可读性和可维护性,包括变量命名 规则、注释规则、代码布局等。
05
微机的应用与发展
微机在工业控制中的应用
实时控制
微机用于实时控制工业生产过程 中的各种参数,如温度、压力、 流量等,确保生产过程的稳定性
和安全性。
自动化生产线
微机集成于自动化生产线中,负责 监控生产设备的运行状态,实现生 产线的自动化和智能化。
故障诊断与预防
微机通过对工业设备的监测和分析, 能够及时发现潜在的故障并进行预 警,提高设备运行的可靠性。
微机在数据处理中的应用
数据采集与处理
01
微机用于采集、处理和分析大量数据,支持企业决策和业务运
营。
数据库管理
02
微机作为数据库服务器,提供数据存储、查询和管理功能,支
持企业信息系统的运行。
云计算与大数据
微机将朝着更小巧、轻便和集成化的方向发展,便于携带和使 用。
随着网络安全问题的日益突出,微机的安全性和可靠性将受到 更多关注,以确保数据和系统的安全。
THANKS
感谢观看
微机原理及接口技术第三章
• 微机原理概述 • 微机的硬件结构 • 微机的指令系统 • 微机的编程技术 • 微机的应用与发展
微型计算机原理 (第三章课后答案)
微型计算机原理第三章 80X86微处理器1.简述8086/8088CPU中BIU和EU的作用,并说明其并行工作过程。
答: (1) BIU的作用:计算20位的物理地址,并负责完成CPU与存储器或I/O端口之间的数据传送。
(2) EU的作用:执行指令,并为BIU提供所需的有效地址。
(3) 并行工作过程:当EU从指令队列中取出指令执行时,BIU将从内存中取出指令补充到指令队列中。
这样就实现了取指和执行指令的并行工作。
2.8086/8088CPU内部有哪些寄存器?其主要作用是什么?答:8086/8088CPU内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄存器4个和控制寄存器2个。
其主要作用是:(1) 数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途。
AX(Accumulator)称为累加器。
用该寄存器存放运算结果可使指令简化,提高指令的执行速度。
此外,所有的I/O指令都使用该寄存器与外设端口交换信息。
BX(Base)称为基址寄存器.用来存放操作数在内存中数据段内的偏移地址,CX(Counter)称为计数器。
在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化, 有利于提高程序的运行速度。
DX(Data)称为数据寄存器。
在寄存器间接寻址的I/O 指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。
(2)地址寄存器:一般用来存放段内的偏移地址。
SP(Stack Pointer)称为堆栈指针寄存器。
在使用堆栈操作指令(PUSH或POP)对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。
BP (Base Pointer)称为基址寄存器.作为通用寄存器,它可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址. SI(Source Index)称为源变址寄存器。
微机原理 第三章答案
第三章作业1答案思考题:1、简述80C51的指令寻址方式。
答:80C51的指令寻址方式有:寄存器寻址、立即寻址、寄存器间址、直接寻址、变址寻址、相对寻址、位寻址2、访问特殊功能寄存器SFR,可使用哪些寻址方式?答SFR只能直接寻址3、若访问外部RAM单元,可使用哪些寻址方式?答:外间RAM单元,只能通过MOVX指令进行寄存器间接寻址。
4、若访问内部RAM单元,可使用哪些寻址方式?答:片内RAM低128字节,可直接寻址、寄存器间接寻址。
(只能使用R0, R1作为间址寄存器。
片内RAM20~2FH单元,可以位寻址。
5、MOV、MOVC、MOVX指令有什么区别?分别用于哪些场合?答:MOV指令用于对内部RAM的访问。
MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。
MOVX指令采用间接寻址方式访问外部数据存储器,有Ri和DPTR两种间接寻址方式。
执行MOVX 指令时,在P3.7引脚上输出RD有效信号,或在P3.6 引脚上输出WR有效信号,可以用做外部数据存储器或I/O的读/写选通信号,与单片机扩展电路有关。
作业:1.给下段汇编语句加注释,汇编成机器语言,并说明该段程序的作用ORG 0000H 机器码MOV SP,#5FH ;栈顶指针指向内部RAM5FH单元C:0X0000 75815FMOV R7,#08H ;R7<- 08H,R7为计数器0X0003 7F08MOV R0,#3FH ;R0指向内部RAM3FH单元0X0005 783FCLOOP: POP ACC ; ACC<- (SP), SP<- SP-1 0X0007 D0E0 MOV @R0,A;把A中内容送入R0指向的单元(3FH)0X0009 F6DEC R0 ;R0<- R0-1 0X000A 18DJNZ R7,CLOOP ;R7<-R7-1 ,R7不为0跳转0X000B DFFASJMP $ ;原地踏步0X000D 80FE程序段作用:把内部RAM中58H-5FH单元的内容依次存入从38H-3FH的八个单元2.阅读下列程序,分析其功能。
微机原理课程总结3章
第3章从8086到Pentium系列微处理器的技术发展由于课时的关系,本章内容一般作为自学或讨论学习的内容。
但是,本章内容对本课程学习的升华具有潜在的意义,故在此也进行提示。
3.1分析教材内容本章主要对80386 CPU,同时也对80486及Pentium微处理器的改进之处和特点进行简单提示。
3.1.1分析重点难点问题1. 80386微处理器1) 80386的特点及其体系结构,请参见教科书P50-52,注意:硬件支持多任务处理。
2) 80386引脚的功能,请参教科书见P53,注意:理解协处理器接口信号。
3) 80386的寄存器组,请参见教科书P54-56,注意:掌握各寄存器的功能。
4) 80386的工作模式,请参见教科书P57,注意:理解三种模式,3种工作模式可以相互转换。
5) 80386中断,请参见教科书P59-60,注意:80386的中断管理机制在实模式和保护模式下是不同的。
2. 80486微处理器1) 80486的主要特点,请参见教科书P60-61。
2) 80486的内部结构,请参见教科书P61-64。
注意和80386的区别。
3. Pentium微处理器1) Pentium体系结构,请参见教科书P65-67,注意Pentium微处理器在486体系结构基础上,还作了哪些增强性的改进。
2) Pentium Ⅱ微处理器,请参见教科书P68。
注意其结构上的特色。
3) Pentium Ⅲ微处理器,请参见教科书P69。
注意其SSE指令。
4) Pentium Ⅳ微处理器,请参见教科书P69。
注意其两组独立工作的ALU。
3.1.2 典型例题解析本章例题主要从微处理机体系结构和新的设计思想出发,以8086微处理机为基础,把重点放在Pentium微处理机的新体系结构和新的设计思想上。
例如Pentium微处理机新体系结构的特点?相对8048体系结构有哪些增强点等?这些问题有助于提高计算机系统结构的水平。
有关这方面的问题,上节已很明确的写出,在此不再赘述。
微机原理第3章习题答案
微机原理第3章习题答案第3章习题参考答案1 分别指出下列指令中的源操作数和⽬的操作数的寻址⽅式。
答:源操作数⽬的操作数(1)MOV AX,[SI] 寄存器寻址寄存器间接寻址(2)MOV DI,100 寄存器寻址⽴即寻址(3)MOV [BX],AL 寄存器间接寄存器(4)MOV [BX][SI],CX 基址+变址寄存器(5)ADD DX,106H[SI] 寄存器变址(6)PUSH AX 寄存器(7)ADD DS:[BP],AX 带段超越寄存器间接寻址寄存器(8)OR AX,DX 寄存器寄存器2.设寄存器(DS)=2000H,(SS)=1500H,(ES)=3200H,(SI)=0A0H,(BX)=100H,(BP)=10H,数据段中变量VAL的偏移地址为50H。
试指出下列各条指令中源操作数的寻址⽅式是什么?对于存储器操作数,其物理地址是多少?答:操作数的寻址⽅式存储器操作数PA (1)MOV AX,[100H] 直接寻址20100H(2)MOV CX,ES:[BX] 带段超越的寄存器间接寻址32100H(3)MOV DX,[BX][SI] 基址+变址寻址200F0H(4)MOV AX,V AL[SI] 变址寻址200F0H(5)MOV BX,1234[BX] 基址寻址205D2H(6)MOV AX,[BP] 寄存器间接寻址15010H3. 判断下列指令有误错误,若有,则改之。
答:(1)PUSH CL 有错,对堆栈操作数总是16位的。
改为:PHSH CX (2)ADCAX,0ABH ⽆,只是CF的值是不确定的(0或1)(3)OUT 3EBH, AX 有,输出设备的端⼝地址若超过8位,应使⽤DX 间接寻址。
改为:MOV DX, 3EBHOUT DX,AX(4)MUL AL, CL 有错。
乘法指令中有AX或AL寄存器是隐含的。
改为:MUL CL(5)MUL AX, 25 有错。
乘法指令中不能⽤⽴即数。
改为:MOV BX,25MUL BX(6)ROL DX,5 有错。
微机原理第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。
微机原理第3章习题(答案)
微机原理第3章习题(答案)1.下列各条指令是否有错?如果有,请指出错误之处并改正(1)MOVDS 1000H(2)MOV[100],23H(3)ADDAX [BX + BP+ 6](4)PUSHDL(5)INAX, [3FH](6)0UT3FFH AL(7)LESSS [SI](8)POP[AX](9)IMUL4CH(10)SHLBX 5(11)INT300(12)XCHGD, 0FFFH答:(1)错误。
不允许直接向段寄存器送立即数,可改为:MOVAX 1000HMOVD, AX(2)错误。
该指令在语法上是对的,即可以把一个立即数送入一个存储单元;但是如果考虑实际编译,则第一操作数前应加上BYTEPT或WORDPT说明,否则汇编程序会因不能确定操作数长度而指示出错。
可改为:MOVBYTEPTR[1O0] 23H(3)错误。
不能同时使用两个基址寄存器BX、BP进行间接寻址,可改为:ADDAX [BX + DI + 6](4)错误。
堆栈操作应以字为单位进行,而DL是一个字节。
可改为:PUSHDX(5)错误。
在输入/输出指令中,8位端口地址应直接写在操作数处。
可改为:INAX, 3FH(6)错误。
端口地址3FFH已超出8位二进制表示范围,16位端口地址应用DX可改为:MOVD, 3FFHOUTDXAL(7)错误。
LES指令的目操作数应该是通用寄存器,不能是段寄存器。
可改为:LESBX [SI](8)错误。
AX不能用于间接寻址,间接寻址只能用BXBP、SI、DI四个寄存器之一。
可改为:POP[BX](9)错误。
立即数不能做乘法指令的操作数,可改为:MOVBJL 4CHIMULBL(10)错误。
当逻辑移位的次数大于1时,应该用CL指示次数。
可改为MOVCL 5SHLBX CL(11)错误。
操作数300>255,已超出有效的中断类型码范围。
(12)错误。
XCHG指令不允许立即数做它的操作数。
可改为:MOVC, 0FFFHXCHGDXCX2•请指出以下各指令的源、目的操作数所使用的寻址方式(1)MOVSI 2100H(2)SBBDISP[BX], 7(3)AND[DI] , AX(4)ORAX [609EH](5)MOV[BXb DI + 30H], CX(6)PUSHES [BP](7)CALL[DI]DISP(8)JNZShort_label答:(1)源操作数:立即数寻址;目的操作数:寄存器寻址(2)源操作数:立即数寻址;目的操作数:基址寻址(3)源操作数:寄存器寻址;目的操作数:寄存器间接寻址(4)源操作数:直接寻址;目的操作数:寄存器寻址5)源操作数:寄存器寻址;目的操作数:(带位移量的)基址变址寻址(6)源操作数:带段超越的寄存器间接寻址;目的操作数:隐含寻址(7)只有一个操作数,为变址寻址(8)只有一个操作数,为相对寻址3. 已知DS=2000H 有关的内存单元值为:(21000H)=00H,(21001H)=12H,(21200H)=00H,(21201H)=10H,(23200H)=20H,(23201H)=30H,(23400H)=40H,(23401H)=30H,(23600H)=60H,(23601H)=30H,符号COUNT 勺偏移地址为1200H。
微机原理与接口技术 郭兰英著 第三章答案
第三章、习题答案3.答案:(1) 完整段定义程序结构:STACK SEGMENT STACK ‘STACK’DB 200H DUP (?)STACK ENDSDATA SEGMENT ‘DATA’变量、数组、字符串等定义`DATA ENDSCODE SEGMENT ‘CODE’ASSUME CS:CODE1, DS:DATA, SS:STACKSTART: MOV AX, DATAMOV DS, AX.........;主程序指令序列MOV AH, 4CHINT 21HSUB1 PROC……. .;子程序指令序列RETSUB1 ENDPCODE ENDSEND START4.略6. 答案:(1) x1 db 20, 20 dup(0)(2) x2 db ‘The course is easy’,’0’(3) x3 db 0AH, 0DH, ‘$’(4) x4 dw 100 dup(0)(5) evenx5 dw ?(6) org 10string db ‘ABCDEF’data dw string7. 答案: var1 2字节; var2 12字节; var3 13字节; var4 12字节;var5、var6与var3偏移量相同; var5占14字节,var6占16字节9.答案:aaa unionstring db ‘ABCDEFG’data dw 4 dup (?)aaa ends13.答案:(1) [AX] 错误;寄存器间接寻址只能用间址寄存器BX、BP、SI、DI中的某一个。
(2) BP 正确;寄存器寻址。
(3) [SI+DI] 错误;基址加变址寻址只能用基址寄存器BX、BP中的某一个与变址寄存器SI、DI中的某一个的内容之和构成偏移地址。
(4) [SP] 错误;寄存器间接寻址只能用间址寄存器BX、BP、SI、DI中的某一个。
(5) CS 错误;一般不允许代码段寄存器CS做操作对象。
(6) BH 正确;寄存器寻址。
微机原理第三章部分习题解答(修改)
1.(1) 立即数寻址无物理地址(2)寄存器寻址无物理地址(3)存储器直接寻址2000H:0050H=20050H(4)存储器间接寻址2000H:00A0H=200A0H(5)存储器间接寻址2200H:00A0H=220A0H(6)存储器间接寻址1500H:0010H=15010H(7)存储器相对寻址2000H:(00A0H+0050H)=200F0H(8)存储器间接寻址2000H:0020H=20020H(9)存储器相对寻址2000H:(00A0H+0032H)=200D2H(10)基址变址寻址2000H:(00A0H+0020H)=200C0H(11)相对基址变址寻址1500H:(0010H+0020H+000AH)=1503AH(12)相对基址变址寻址2000H:(00A0H+0020H+0050H)=20110H3.(1) 1200H (2)0100H (3)2211H (4)4B2AH (5)4B2AH题目有误(6)4433H (7)6DC7H 题目有误(8)2000H4.(1)×目的操作数和源操作数类型不匹配 BX 16位 AH 8位(2) ×在汇编语言中是不允许两个内存单元间传递数据(3) ×不能连用两个变址,其中一个应为基址(4) ×在汇编语言中是不允许两个内存单元间传递数据(5) √(6) × CS不作为目的操作数,故不能对CS赋值(7) ×不能将立即数直接送入段寄存器(8)× 1000超出AL的0~255(9)×不允许在段寄存器间用mov传送(10) √(11) ×不能弹出一个数据到CS中(12) × 269H超出AL的256H(13) ×立即数不能作为目的操作数(14)× PUSH是字操作(15) ×字操作,与BYTE不符(16) √(17) √(18)×SRC不能为立即数(19)×未说明是字还是字节加;未指出操作类型(20)×移位位数大于1时由CL寄存器的值表示6. CF ZF SF OF PFAL=79H 不变AL=0F2H 0 0 1 1 0AL=8FH 1 0 1 0 0AL=8FH 1 0 1 0 1AL=0 0 1 0 0 1AL=0FFH 0 0 1 0 1AL=0 0 1 0 0 19.CLCNOT AXADD AX,0001HNOT DXADC DX,0000H11.AX=5000H BX=5000H SP=1FFEHPUSH AX 将AX里的值压入堆栈,PUSH BX 将BX里的值再压入堆栈,POP AX将堆栈顶的值弹出到AX里,即将BX的值赋给AX。
微机原理与接口技术(楼顺天)-第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。
微机原理第三章最终修改.
(3)直接寻址是对存储器进行访问时可采用的最简单的形式。 这种寻址方法是以数据段的地址为基础,可在多达64KB的范围 内寻找操作数。
(4)操作数的实际地址为数据段寄存器DS左移4位加上操作数 的有效地址( 16位地址偏移量)。
执行前: (AX)=0040H,(BX)=0030H,(DS) =2000H,(20036H)=0050H
执行指令:ADD 6[BX],AX 执行:(20036H)+(AX) →(20036H) 执行后:(AX)=0040H,
(BX)=0030H, (DS)=2000H, (20036H)=0090H。
表31段寄存器使用的基本约定访问存储器类型默认段寄存器可指定段寄存器段内偏移地址来源取指令码csip堆栈操作sssp串操作源地址dscsessssi串操作目的地址esdibp用作基址寄存器sscsdses根据寻址方式求得有效地址一般数据存取dscsesss根据寻址方式求得有效地址1寻址方式不需总线周期执行速度快
在直接寻址方式中操作数地址的16位偏移量直接包含在指令 中,它与操作码一起存放在代码段区域,操作数一般在数据段
区域中,它的地址为数据段寄 存器DS加上这16位地址偏移 量。如图所示。 例如:MOV AX,DS: [2000H];
特点:
(1)如果指令中没有指明操作数存放在哪一段,则系统默认为 数据段DS。如上例可写成: MOV AX,[2000H]
微机原理
第3章
第3章 8086的指令系统
3.1 8086指令的特点 3.2 8086的寻址方式 3.3 8086的指令格式及数据类型 3.4 8086的指令集
3.1 8086指令的特点
16 32位微机原理第3章课后习题答案
16 32位微机原理第3章课后习题答案1632位微机原理第3章课后习题答案>第3章3.1:汇编语言就是一种以处理器指令系统为基础的低级程序设计语言,它使用助记符抒发指令操作码,使用标识符号则表示指令操作数,可以轻易、有效地掌控计算机硬件,因而难建立代码序列短小、运转快速的可执行程序3.2解:(1)完备的汇编语言源程序由段共同组成(2)一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列(3)须要单一制运转的程序必须涵盖一个代码段,并命令程序执行的初始点,一个程序只有一个初始点(4)所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内已经开始边线:用标号阐明返回dos:利用dos功能调用的4ch子功能来实现汇编停止:执行到一条end伪指令时,停止汇编3.5求解:段定位、段组合和段类型。
3.6得出使用一个源程序格式书写的例题3.1源程序例题3.1:创建一个在屏幕上显示一段信息的程序??解:stacksegmentstackdb1024(0)stackends41hdatasegmentstringdb'hello,assembly!',0dh,0ah,‘$’dataendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movdx,offsetstringmovah,9int21hcodeendsendstart3.7dos支持哪两种可执行程序结构,编写这两种程序时需要注意什么?解:(1).exe程序只有一个逻辑段,程序长度不超过64kb3.8举例说明等价“euq”伪指令和等号“=”伪指令的用途求解:符号定义伪指令有“等价equ”和“等号=”:符号名equ数值表达式符号名equ符号名=数值表达式equ用作数值等价时无法重复定义符号名,但“=”容许存有重复赋值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6[BX][SI]
或[BX+6][SI] 或[BX+6+SI] 其中:方括号[ ]有相加的含义
பைடு நூலகம்例3.6】 MOV
AL,[BX+SI](或MOV
AL,[BX][SI])
若指令执行前,(DS)=1000H,(BX)=0010H,
(SI)=0002H,(10012H)=45H
则 有效地址EA=(BX)+(SI)=0012H, 实际地址PA=(DS)×10H+EA=10012H 指令执行后(AL)=45H。
AX,[2000H]
(2)操作数的有效地址与操作码一起存放在代码段区域,操作 数一般在数据段区域中。 (3)直接寻址是对存储器进行访问时可采用的最简单的形式。 这种寻址方法是以数据段的地址为基础,可在多达64KB的范围
内寻找操作数。
(4)操作数的实际地址为数据段寄存器DS左移4位加上操作数 的有效地址( 16位地址偏移量)。
(3)一条指令中,既可以对源操作数采用寄存器寻址,也可以对
目的操作数采用寄存器寻址,也可二者均采用寄存器寻址。
【例3.3】下列程序执行后,(AX)=?,(BX)=? MOV MOV ADD AX,1234H BX,5678H AX,BX
该程序中MOV指令为数据传送指令操作符,ADD指令为加法指 令操作符,三条指令皆为双操作数指令。第一、二条指令AX、BX 皆为目的操作数地址,为立即数寻址方式。第三条指令中,AX为 目的操作数地址,BX为源操作数地址。源地址和目的地址皆为寄
(5)段超越前缀:如果要对除DS以外的其他段寄存器(代码段、
堆栈段和附加段)所指出的存储区进行直接寻址,应在指令中指
定段寄存器-----段超越前缀。如:
MOV MOV AX,[2000H] ;数据段(可省略DS )
BX,ES:[3000H] ;操作数在附加段ES (不能省略ES )
(6)直接寻址的地址如果是数值地址,则必须用“[ ]”括起来, 以区别立即数。允许用符号地址(即程序中的标号)代替数值地 址。
直接端口寻址:指令直接提供8位端口地址。
例:IN AL,63H;AL ←(63H)
当操作数在外部设备时,使用I/O指令。此时有两种不同的 寻址方式访问I/O端口:
OUT 63H,AL
{从I/O地址号为63H的端口中读取数据送到AL中}
间接端口寻址方式:由DX寄存器给出16位端
口地址。
例: MOV DX,3FCH IN AL,DX;(AL) ←((DX)) OUT DX,AL; {将AL中的内容输出到地址由DX寄存器内容所指定 的端口中}
╳
16
+(BP)
若在指令中规定是段超越的,则BP的内容也可以与其它的段寄 存器相加,形成操作数地址。
例如:MOV AX,DS:[BP] :操作数地址是:(DS)
╳
16
+(BP)
特点: (1)指令中的基址寄存器与段寄存器的配对关系为: BX、SI、DI----DS, BP----SS
(2)如果要对其他段寄存器所指出的区域进行寻址,则在指令中 应指出指定超越段前缀。 (3)寄存器间接寻址方式适用于表格处理。执行完一条指令后,
(5)指令的长度较长,灵活性较差。
【例3.1】MOV
AX, 10
执行后(AX)=? 其中:源操作数为立即寻址方式,立即数为10,存放在指令的下 一单元。
图形表示:
执行:10→AX
执行后:(AX)=000AH
2 直接寻址
定义:操作数采用直接给出被访问内存单元的逻辑地址的方式时, 这种寻址方式称为直接寻址方式。
只需修改寄存器的内容(+1、+2、……)就可取出表格中的相应项。 (4)间接寻址址的寄存器用“[ ]”括起来,以区别寄存器寻址。
【例3.4】指令 MOV AX,[BX] 若(DS)=2000H,(BX)=1000H, 物理地址=20000H+1000H=21000H。 指令执行前,(AX)=2030H,(21000H)=0A0H,(21001H) =50H, 指令执行后,(AX)=50A0H,(21000H)=0A0H,(21001H) =50H。
AX
指令执行情况如下:
AH
AL
数据段
物理地址
A0H 50H 56H
21000H 20001H 20002H
5 基址/变址寻址(寄存器相对寻址) 寄存器相对寻址方式是在指令中给定一个基址寄存器(或变址 寄存器)名和一个8位或16位的相对偏移量,两者之和作为操作数 的有效地址EA。对BX、SI、DI这三个间址寄存器,指示的是数据段 中的数据,而用BP作间址寄存器,则指示的是堆栈段中的数据。 汇编格式:X[R](X表示位移量,是8位或16位二进制补码表示的有 符号数, R表示寄存器)。 功能:操作数存放在存储器,寄存器R的内容加位移量X为操作数的 偏移地址EA。
数据传输指令
MOV 目的操作数,源操作数
1 立即寻址 定义:操作数直接由指令提供的寻址方式称为立即寻址方式。
在立即寻址方式中所提供的操作数直接包含在指令中。它紧跟 在操作码的后面,与操作码一起放在代码段区域中。如图所示。
例如: MOV AX, 3000H 立即数:直接由指令提供的 具体操作数称为立即数。
不同的计算机有不同的指令系统,汇编语言的指令语句 都与机器指令一一对应,汇编语言通过汇编程序将其翻译成
机器指令代码(目标代码),让CPU执行某种操作。
8086指令的特点
灵活的指令格式 指令格式的一对多形式 较强的运算指令
指令有较强的寻址能力
指令有处理多种数据的能力
有效地址EA(P48 图3.1)
有效地址EA计算方法如右:
特点:
(1)SI、DI、BX默认的段寄存器为DS,BP默认的段寄存器为SS。 (2)可以使用段寄存器超越前缀来寻址其他段。 (3)寄存器相对寻址方式适用于表格处理。表首的地址可设置 为偏移量指针,利用修改基址或变址寄存器的内容来获得表格中 的内容。 【例3.5】设执行前: (AX)=0040H,(BX)=0030H,(DS) =2000H,(20036H)=0050H
在直接寻址方式中操作数地址的16位偏移量直接包含在指令 中,它与操作码一起存放在代码段区域,操作数一般在数据段 区域中,它的地址为数据段寄 存器DS加上这16位地址偏移量。 如图所示。 例如:MOV AX,DS:[2000H];
特点:
(1)如果指令中没有指明操作数存放在哪一段,则系统默认为
数据段DS。如上例可写成: MOV
定义:操作数直接存放在CPU的内部寄存器中(如:寄存器AX、 BX、CX、DX等)的寻址方式称为寄存器寻址方式。
例如:MOV DS,AX
MOV
特点:
AL,BH
(1)操作数放在CPU的通用寄存器中。
16位:AX、BX、CX、DX、SI、DI、SP、IP
8位 :AH、AL、BH、BL、CH、CL、DH、DL 通常放在AX、 AH、AL中,因为AX是累加器,结果一般放在AX 中,这样指令会更短些。 (2)采用寄存器寻址时,操作就在CPU内部进行,不需要使用总 线周期,速度快。
操作数在存储器中,其有效地址EA由(基址寄存器)+(变址 寄存器)+相对偏移量形成。
特点:同基址变址寻址方式,比基址变址寻址方式更灵活。
表3-1 段寄存器使用的基本约定
访问存储器类型 取指令码 堆栈操作 串操作源地址 串操作目的地址 默认段寄存器 CS SS DS ES 可指定段寄存器 无 无 CS、ES、SS 无 段内偏移地址来源 IP SP SI DI 根据寻址方式求得 有效地址 根据寻址方式求得 有效地址
TIPS
多种表达形式
用符号表示位移量
在寄存器相对寻址或相对基址变址寻址方式中,位移量可用符号 表示: MOV AX,[SI+COUNT] ;COUNT是事先定义的变量或常量(就是数值) MOV AX,[BX+SI+WNUM];WNUM也是变量或常量
微机原理
第3章
第3章 8086的指令系统
3.1 8086指令的特点
3.2 8086的寻址方式
3.3 8086的指令格式及数据类型
3.4 8086的指令集
3.1 8086指令的特点 1. 指令:让计算机完成某种操作的命令称为指令。 内容包括完成什么操作,操作数的来源,结果的存 放,以及下一条指令的位置等等。 2. 指令系统:指令的集合即为指令系统。 3. 指令的一般格式:
BP用作基址寄存器
一般数据存取
SS
DS
CS、DS、ES
CS、ES、SS
8 串寻址(8086串指令中使用)
源操作数的逻辑地址为DS:SI; 目的操作数的逻辑地址为ES:DI
9 I/O端口寻址(当I/O端口按独立的I/O空间编址时)
端口(Port)
对程序员来说,I/O接口电路由接口寄存器组成,为了区 别它们,各个寄存器进行了编号,形成I/O地址。 端口就是指I/O地址,是微机系统对I/O接口电路中与程 序设计有关的寄存器的编号 系统实际上就是通过这些端口与外设进行通讯的 通常采用十六进制数来表达端口 Intel 8086支持64K个8位端口 其I/O地址可以表示为:0000H ~FFFFH
【例3.2】寄存器和存储器内容为:(AX)=1212H,BUF为数据 段定义的变量,其偏移地址是2000H,(DS)=3000H,(32000H) =4545H。 执行指令:MOV AX ,BUF
执行后:(AX)=?
图形表示:
执行:(32000H)→(AX) 执行后:(AX)=4545H
3 寄存器寻址
特点: (1)立即数可以是8位的,也可以是16位的。若是16位的,则存 储时低位在前,高位在后。只能是整数,不能是小数、变量或其 它数据类型。 (2)立即数只能作为源操作数,立即寻址主要用来给寄存器或 存储器赋初值。 (3)速度快(操作数直接由指令中获得,不需要运行总线周期)