ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:24.45KB ,
资源ID:22784222      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22784222.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理与接口技术第二版龚尚福等编.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理与接口技术第二版龚尚福等编.docx

1、微机原理与接口技术第二版龚尚福等编微机原理与接口技术(第二版)龚尚福等编2.2 8086微处理器由哪几部分组成?各部分的功能是什么? 【解】:按功能可分为两部分:总线接口单元BIU(Bus Interface Unit)和执行单元EU(Execution Unit)。总线接口单元BIU是8086 CPU在存储器和I/O设备之间的接口部件,负责对全部引脚的操作,即8086对存储器和I/O设备的所有操作都是由BIU完成的。所有对外部总线的操作都必须有正确的地址和适当的控制信号,BIU中的各部件主要是围绕这个目标设计的。它提供了16位双向数据总线、20位地址总线和若干条控制总线。 其具体任务是:负责

2、从内存单元中预取指令,并将它们送到指令队列缓冲器暂存。CPU执行指令时,总线接口单元要配合执行单元,从指定的内存单元或I/O端口中取出数据传送给执行单元,或者把执行单元的处理结果传送到指定的内存单元或I/O端口中。执行单元EU中包含1个16位的运算器ALU、8个16位的寄存器、1个16位标志寄存器FR、1个运算暂存器和执行单元的控制电路。这个单元进行所有指令的解释和执行,同时管理上述有关的寄存器。EU对指令的执行是从取指令操作码开始的,它从总线接口单元的指令队列缓冲器中每次取一个字节。如果指令队列缓冲器中是空的,那么EU就要等待BIU通过外部总线从存储器中取得指令并送到EU,通过译码电路分析,

3、发出相应控制命令,控制ALU数据总线中数据的流向。2.3 简述8086 CPU的寄存器组织。【解】:(1)通用寄存器:通用寄存器又称数据寄存器,既可作为16位数据寄存器使用,也可作为两个8位数据寄存器使用。当用作16位时,称为AX、BX、CX、DX。当用作8位时,AH、BH、CH、DH存放高字节,AL、BL、CL、DL存放低字节,并且可独立寻址。这样,4个16位寄存器就可当作8个8位寄存器来使用。(2)段寄存器:段寄存器共有4个CS、DS、SS、ES。代码段寄存器CS表示当前使用的指令代码可以从该段寄存器指定的存储器段中取得,相应的偏移值则由IP提供;堆栈段寄存器SS指定当前堆栈的起始地址;数

4、据段寄存器DS指示当前程序使用的数据所存放段的起始地址;附加段寄存器ES则指出当前程序使用附加段地址的起始位置,该段一般用来存放原始数据或运算结果。 (3)指针和变址寄存器:堆栈指针SP用以指出在堆栈段中当前栈顶的地址。入栈(PUSH)和出栈(POP)指令由SP给出栈顶的偏移地址。基址指针BP指出要处理的数据在堆栈段中的基地址,故称为基址指针寄存器。变址寄存器SI和DI用来存放当前数据段中某个单元的偏移量。(4)指令指针与标志寄存器:指令指针IP的功能跟Z80 CPU中的程序计数器PC的功能类似。正常运行时,IP中存放的是BIU要取的下一条指令的偏移地址。它具有自动加1功能,每当执行一次取指令

5、操作时,它将自动加1,使它指向要取的下一内存单元,每取一个字节后IP内容加1,而取一个字后IP内容则加2。某些指令可使IP值改变,某些指令还可使IP值压入堆栈或从堆栈中弹出。标志寄存器FLAGS是16位的寄存器,8086共使用了9个有效位,标志寄存器格式如图2.5所示。其中的6位是状态标志位,3位为控制标志位。状态标志位是当一些指令执行后,表征所产生数据的一些特征。而控制标志位则可以由程序写入,以达到控制处理机状态或程序执行方式的表征。2.4 试述8086 CPU标志寄存器各位的含义与作用。【解】:(1) 6个状态标志位的功能分别叙述如下: CF(Carry Flag)进位标志位。当执行一个加

6、法(或减法)运算,使最高位产生进位(或借位)时,CF为1;否则为0。 PF(Parity Flag)奇偶标志位。该标志位反映运算结果中1的个数是偶数还是奇数。当指令执行结果的低8位中含有偶数个1时,PF=1;否则PF=0。 AF(Auxiliary carry Flag)辅助进位标志位。当执行一个加法(或减法)运算,使结果的低4位向高4位有进位(或借位)时,AF=1;否则AF=0。ZF(Zero Flag)零标志位。若当前的运算结果为零,ZF=1;否则ZF=0。SF(Sign Flag)符号标志位。它和运算结果的最高位相同。OF(Overflow Flag)溢出标志位。当补码运算有溢出时,OF

7、=1;否则OF=0。(2) 3个控制标志位用来控制CPU的操作,由指令进行置位和复位。DF(Direction Flag)方向标志位。它用以指定字符串处理时的方向,当该位置“1”时,字符串以递减顺序处理,即地址以从高到低顺序递减。反之,则以递增顺序处理。IF(Interrupt enable Flag)中断允许标志位。它用来控制8086是否允许接收外部中断请求。若IF=1,8086能响应外部中断,反之则不响应外部中断。注意:IF的状态不影响非屏蔽中断请求(NMI)和CPU内部中断请求。TF(Trap Flag)跟踪标志位。它是为调试程序而设定的陷阱控制位。当该位置“1”时,8086 CPU处于

8、单步状态,此时CPU每执行完一条指令就自动产生一次内部中断。当该位复位后,CPU恢复正常工作。2.5 8086中,存储器为什么采用分段管理? 【解】:8086/8088的地址总线宽度为20位,其最大寻址空间是1MB。而其他微处理器则在实模式下只能访问前1 MB的存储器地址。实际上,实模式就是为8086/8088而设计的工作方式,它要解决在16位字长的机器里怎么提供20位地址的问题,而解决的办法是采用存储器地址分段的方法。程序员在编制程序时要把存储器划分成段,在每个段内地址空间是线性增长的。每个段的大小可达64KB,这样段内地址可以用16位表示。存储器分段的方法虽然给程序设计带来一定的麻烦,但这

9、种方法可以扩大存储空间,而且对于程序的再定位也是很方便的。2.6 什么是逻辑地址?什么是物理地址?如何由逻辑地址计算物理地址?【解】:物理地址:完成存储器单元或I/O端口寻址的实际地址成为物理地址,CPU型号不同其物理地址也不同。物理地址是指CPU和存储器进行数据交换时实际所使用的地址,而逻辑地址是程序使用的地址。物理地址由两部分组成:段基址(段起始地址高16位)和偏移地址。前者由段寄存器给出,后者是指存储单元所在的位置离段起始地址的偏移距离。当CPU寻址某个存储单元时,先将段寄存器的内容左移4位,然后加上指令中提供的16位偏移地址而形成20位物理地址。在取指令时,CPU自动选择代码段寄存器C

10、S,左移4位后,加上指令提供的16位偏移地址,计算出要取指令的物理地址。堆栈操作时,CPU自动选择堆栈段寄存器SS,将其内容左移4位后,加上指令提供的16位偏移地址,计算出栈顶单元的物理地址。每当存取操作数时,CPU会自动选择数据段寄存器(或附加段寄存器ES),将段基值左移4位后加上16位偏移地址,得到操作数在内存的物理地址。2.9 在80x86微机的输入/输出指令中,I/O端号通常是由DX寄存器提供的,但有时也可以在指令中直接指定00H0FFH的端口号。试问可直接由指令指定的I/O端口数是多少?【解】:由于在80x86的输入/输出指令中,可以直接在00H0FFH指定,所以直接由指令指定的I/

11、O端口数是256。3.1 指令分成几部分?每部分的作用是什么?【解】:每条指令由两部分组成:操作码字段和地址码字段。操作码字段:用来说明该指令所要完成的操作。 地址码字段:用来描述该指令的操作对象。一般是直接给出操作数,或者给出操作数存放的寄存器编号,或者给出操作数存放的存储单元的地址或有关地址的信息。3.2 指出下列MOV指令的源操作数的寻址方式:MOV AX,1234HMOV AX,BXMOV AX,BXMOV AX,TABLE;TABLE ;TABLE是一个变量名MOV AX,1234HMOV AX,BX+1234HMOV AX,BPSIMOV AX,BX+SI-1234H【解】:MOV

12、 AX,1234H 立即寻址MOV AX,BX 寄存器寻址MOV AX,BX 寄存器间接寻址MOV AX,TABLE ;TABLE是一个变量名 直接寻址方式MOV AX,1234H 直接寻址方式MOV AX,BX+1234H 寄存器相对寻址MOV AX,BPSI 基址变址寻址MOV AX,BX+SI1234H 相对地址变址寻址3.3 设:(DS)=2000H,(BX)=0100H,(SS)=1000H,(BP)=0010H,TABLE的物理地址为2000AH,(SI)=0002H。求下列每条指令源操作数的存储单元地址:MOV AX,1234HMOV AX,BXMOV AX,TABLEBXMOV

13、 AX,BPMOV AX,BPSI【解】: 存储单元地址:(DS)10H + EA =2000H10H+1234H=21234H存储单元地址:(DS)10H +(BX)=2000H10H+0100H=20100H存储单元地址:(DS)10H+EA=2000H10H+0100H+000AH=2010AH存储单元地址:(SS)10H+EA=1000H10H+0010H=10010H储单元地址:(SS)10H+EA=1000H10H+0010H+0002H =10012H3.4 设ARRAY是字数组的首地址,写出将第5个字元素取出送AX寄存器的指令,要求使用以下几种寻址方式: 直接寻址 寄存器间接寻

14、址 寄存器相对寻址 基址变址寻址【解】:(1)直接寻址(2)寄存器间接寻址(3)寄存器相对寻址(4)基址变址寻址 MOV AX, ARRAY+8 MOV BX, ARRAY+8 MOV BX, 8 LEA BX, ARRAY MOV AX, BX MOV AX, ARRAYBX MOV SI, 8 MOV AX,BX+SI3.7 设当前(CS)=2000H,(IP)=2000H,标号NEXT定义在当前代码段偏移地址是0100H处,(DS)=1000H,(BX)=1000H,(11000H)=00H,(11001H)=30H,数据段定义的字变量ARRAY的内容为1000H,试写出下列转移指令的目

15、标转移地址 JMP NEAR PTR JMP BX JMP WORD PTR ARRAY【解】: JMP NEAR PTR 此转移指令的目标转移地址为:20100H JMP BX 此转移指令的目标转移地址为:21000H JMP WORD PTR ARRAY 此转移指令的目标转移地址为:23000H3.8 设当前(CS)=2000H,(IP)=2000H,标号NEXT定义在3000H:1000H处。当前(DS)=1000H,(BX)=1000H,(11000H)=00H,(11001H)=03H,(11002H)=00H,(11003H)=30H,数据段定义的字变量ARRAY的内容为0300H

16、,(ARRAY+2)=3000H,试写出下列转移指令的目标转移地址: JMP FAR PTR NEXT JMP DWORD ARRAY【解】: JMP FAR PTR NEXT 此转移指令的目标转移地址为:31000H JMP DWORD ARRAY 此转移指令的目标转移地址为:30300H3.9 下列每组指令有何区别?(1) MOV AX,1234H MOV AX,1234H (2) MOV AX,TABLE MOV AX,TABLE(3) MOV AX,TABLE LEA AX,TALBE (4) MOV AX,BX MOV AX,BX【解】:(1) MOV AX,1234H 将立即数12

17、34H送到寄存器AX中 MOV AX,1234H 将存储区1234H中的内容送到寄存器AX中 (2) MOV AX,TABLE 将标号TABLE的地址送到寄存器AX中MOV AX,TABLE 将存储区TABLE 中的内容送到寄存器AX中(3) MOV AX,TABLE 将标号TABLE的地址送到寄存器AX中 LEA AX,TALBE 将标号TABLE的地址送到寄存器AX中(4) MOV AX,BX 寄存器寻址 MOV AX,BX 寄存器间接寻址 3.10 MOV CS,AX指令正确吗?【解】:MOV CS,AX指令不正确。因为CS是指令寄存器,由系统自动改变,不能由指令进行更改。3.11 写一

18、指令序列,将3456H装入DS寄存器。【解】:MOV AX, 3456H MOV DS, AX3.14 若正在访问堆栈中03600H单元,则SS和SP的值是多少?【解】:若正在访问堆栈中03600H单元,则SS和SP的值会有好多组合,其中可以有SS是0300H,SP是0600H。3.15 若(SS)=2000H,(SP)=000AH,先执行将字数据1234H和5678H压入堆栈的操作,再执行弹出一个字数据的操作,试画出堆栈区及SP的内容变化过程示意图(标出存储单元的物理地址)。SP20006H78H【解】:物理地址(SS)10HSP 20007H56H34HSP20008H 20008H 20

19、009H 2000AH12H34H12H 20009HSP2000AH 2000AH3.16 解释XLAT指令是怎样转换AL寄存器中的内容的。并编写一段程序用XLAT指令将BCD码09转换成对应的ASCII码,并将ASCII码存入数据ARRAY中。【解】:XLAT指令是将AL的内容替换成存储单元中的一个数,往往用于代码转换。使用此指令前,先在数据段建立一个表格,表格首地址存入BX寄存器,欲取代码的表内位移量存入AL寄存器中。XLAT指令将(AL)值扩展成16位,与(BX)相加形成一个段偏移地址,段地址取(DS),据此读出代码送入AL寄存器。程序如下:TABLE DB 30H, 31H, , 3

20、9H ARRAY DB 1O DUP(?) MOV CL, 10 MOV SI, 0 MOV BX, OFFSET TABLE MOV AL, AL AGAIN: XLAT MOV SI, AL INC SI INC AL LOOP AGAIN3.17 若(AX)=0001H,(BX)=0FFFFH,执行ADD AX,BX之后,标志位ZF、SF、CF和OF各是什么?【解】: (AX)= 0001H = 0000 0000 0000 0001 B + (BX)=0FFFFH = 1111 1111 1111 1111 B (AX)= 0001H = 1 0000 0000 0000 0000 B

21、 则:ZF=1、SF=0、CF=1、OF=0 3.18 写一指令序列完成将AX寄存器的最低4位置1,最高3位清0,第7、8、9位取反,其余位不变。【解】: OR AX, 000FH (OR AX, 0000 0000 0000 1111 B) AND AX, 1FFFH (AND AX, 0001 1111 1111 1111 B) XOR AX, 01C0H (XOR AX, 0000 0001 1100 0000 B)3.19 试写出执行下列指令序列后AX寄存器的内容。执行 前(AX)=1234H。MOV CL,7SHL BX,CL【解】:(AX) = 1234H = 0001 0010

22、0011 0100 B 执行后:(AX) = 0 0011 0100 0000 000 B = 0001 1010 0000 0000 B = 1A00H 4.1 假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列指令中哪些是非法的?它们的错误是什么? MOV BP,AL MOV WORD_OPBX+4*3DI,SP MOV WORD_OP1,WORD_OP2 MOV AX,WORD_OP1DX MOV SAVE WORD,DS MOV SP,SS:DATA_WORDBXSI MOV BXSI,2 MOV AX,WORD_OP1+WORD_OP2 MOV AX,WORD_OP1-WO

23、RD_OP2+100 MOV WORD_OP1,WORD_OP1-WORD_OP2【解】: MOV BP,AL 两个操作数不匹配 MOV WORD_OPBX+4*3DI,SP MOV WORD_OP1,WORD_OP2 两个内存单元之间不能直接传送数据 MOV AX,WORD_OP1DX MOV SAVE WORD,DS MOV SP,SS:DATA_WORDBXSI当基址为BX时,选取DS寄存器 MOV BXSI,2 MOV AX,WORD_OP1+WORD_OP2 MOV AX,WORD_OP1-WORD_OP2+100 MOV WORD_OP1,WORD_OP1-WORD_OP24.2

24、假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处: ADD VAR1,VAR2 SUB AL,VAR1 JMP LABSI JNZ VAR1 JMP NEAR LAB【解】: ADD VAR1,VAR2 ADD两个操作数不能同时为存储单元, MOV AX, VAR1 ADD AX, VAR2 SUB AL,VAR1两个操作数不匹配SUB AX, VAR1 JMP LABSI LAB与SI不能相加JMP WORD PTR SI JNZ VAR1JNZ后面应是标号,不应是变量JNZ LAB JMP NEAR LAB缺少PTR运算符JMP NEAR PTR LAB4.3 画图说

25、明下列语句所分配的存储空间及初始化的数据值。 BYTE_VAR DB BYTE,12,-12H,3 DUP(0,?,2 DUP(1,2),?) WORD_VAR DW 5 DUP(0,1,2),?,-5,BY,TE,256HWORD_VAR00H00H01H00H02H00H00H00H01H00H02H00HBBYTE_VAR41H【解】:(1) (2) 0Y59H1E45HT54H120CH212HF4H30个字节00H0210101H02H2101H200H0202H101H202H101H02H2FBH5FFH54H00H56H00H45HBYTE00H41H59H00H02H101H

26、000H202H101H2256H02H4.4 假设程序中的数据定义如下:PARTNO DW ?PNAME DB 16 DUP(?)COUNT DD ?PLENTH EQU $-PARTNO问PLENTH的值为多少?它表示什么意义?【解】:PLENTH的值为22,它表示数据的个数。4.5 有符号定义语句如下:BUFF DB 1,2,3,123EBUFF DB 0L EQU EBUFF-BUFF问L的值是多少?【解】:PLENTH的值为6。4.6 假设程序中的数据定义如下:LNAME DB 30 DUP(?)ADDRESS DB 30 DUP(?)CITY DB 15 DUP(?)CODE-LI

27、ST DB 1,7,8,3,2 用一条MOV指令将LNAME的偏移地址放入AX。 用一条指令将CODE_LIST的头两个字节的内容放入SI。 写一条伪操作使CODE_LENGHT的值等于CODE_LIST域的实际长度。【解】: 用一条MOV指令将LNAME的偏移地址放入AX。 MOV AX, OFFSET LANME 用一条指令将CODE_LIST的头两个字节的内容放入SI。 MOV SI, WORD PTR CODE_LSIT 写一条伪操作使CODE_LENGHT的值等于CODE_LIST域的实际长度。 CODE_LENGHT EQU CITY-CODE_LIST4.7 试写出一个完整的数据

28、段DATA_SEG,它把整数5赋予一个字节,并把整数-1,0,2,5和4放在10字数组DATA_LIST的头5个单元中。然后,写出完整的代码段,其功能为:把DATA_LIST中头5个数中的最大值和最小值分别存入MAX和MIN单元中。【解】:参考程序如下: DATA_SEG SEGMENT DB1 DB 5 DATA_LIST DB -1, 0, 2, 5, 4, 5 DUP(?) COUNT DB 5 MAX DB ? MIN DB ? DATA_SEG ENDS CODE_SEG SEGMENT ASSUME CS:CODE_SEG, DS:DATA_SEG START PROC FAR P

29、USH DS MOV AX, 0 PUSH AX MOV AX, DATA_SEG MOV DS, AX LEA BX, DATA_LIST MOV CX, COUNT-1 MOV AL, BX MOV AH, BX+1 LOOP1: INC BX CMP AH, AL JAE LOOP1 XCHG AH, AL LOOP2 INC BX CMP AH, BX JAE LIS XCHG AH, BX JMP LOP2 LIS: CMP AL , BX JBE LOP2 XCHG AL, BX LOOP2 MOV MAX, AH MOV MIN, AL RET START ENDP CODE_SEG ENDS END START4.10 给出等值语句如下:ALPHA EQU 100BETA EQU 25GAMMA EQU 2下列表达式的值是多少? ALPHA*100+BETA ALPHA MOD GAMMA+BETA (ALPHA+2)*BETA-2 (BETA/3) MOD 5 (ALPHA+3)*(BETA MOD GAMMA) ALPHA GE GAMMA BETA AND 7 GAMMA OR 3【解】: ALPHA*100+BETA 10010025100

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1