汇编与接口第四章作业
- 格式:doc
- 大小:29.00 KB
- 文档页数:2
“微机系统原理与接口技术”第四章习题解答1.判断以下说法能否正确,若有错,请说明原由并更正。
(1)伪指令在汇编过程中不会产生二进制代码。
(2)宏和过程的同样之处是都可用于简化源程序书写、精简目标代码。
(3)在计算机中,高级语言往常需要变换为汇编语言后才能履行。
(4)汇编语言程序上机一般包含编写、汇编、链接和调试几个步骤。
答:( 1)正确。
(2)错误。
宏不可以精简目标代码。
(3)错误。
高级语言程序经编译或解说后直接变换为目标代码。
(4)正确。
2.已知数据和符号定义A1DB?A2DB8K1EQU 100判断以下指令的正误,并说明错误指令的原由。
(1) MOVK1, AX(2) MOVA2, AH(3) MOVBX, K1MOV [BX] , DX(4) CMPA1, A2( 5) K1EQU 200答:( 1)错误。
K1 是符号常数,在此处相当于立刻数100 ,故不可以做目的操作数。
(2)正确。
(3)正确。
(4)错误。
A1、 A2 都是字节变量,相当于两个储存器单元,故不可以同时出现在一条指令中直接进行比较。
( 5)错误。
用EQU定义的符号不可以从头赋值,除非已用PURGE排除了原值。
3.若数据段中有定义NUM1EQU 23HNUM2DW0则指令MOV NUM2, NUM1 的源、目操作数的寻址方式以及指令履行后NUM2+ 1 单元的内容分别是什么?答:指令 MOV NUM2,NUM1的源操作数使用立刻数寻址,目的操作数使用直接寻址。
指令履行后NUM2+ 1 单元的内容是0。
4.设 DS=6000H, BX=8432H,SS=5000H,SP=3258H,内存 69632H~ 69635H 单元的内容挨次是 00H、11H、22H、33H。
4 字节指令 CALL DWORDPTR[BX+1200H] 自己位于 2000H:3250H处的双字单元中。
当8086 履行该指令后转移至子程序进口时,CS、IP 、 SS、SP 各寄存器以及栈顶 2 个字单元的内容分别是多少?答:履行结果为CS=3322H,IP=1100H ,SS=5000H,SP=3254H,栈顶的两个字即断点地点,为2000H: 3254H。
微机原理、汇编语言与接口技术-第四章-习题答案-人民邮电出版社-(周杰英-张萍-郭雪梅-著)第4章汇编语言程序设计习题与参考答案1、指出以下数据定义伪指令所分配的字节数(8086系统)。
(1)DATA1 DB 10,?,‘A’(2)DATA2 DW 10 DUP(2,3 DUP(?),1)(3)DATA3 DB ‘HELLO,WORLD!’,‘$’(4)DATA4 DW D ATA4解:(1)3字节;(2)100字节;(3)13字节;(4)2字节。
2、指出以下数据定义伪指令所分配的字节数(80386系统)。
(1)DATA1 DF 12,34,56(2)DATA2 DF D ATA2(3)DATA3 DQ 0,10 DUP(?)(4)DATA4 DT 0,1,2解:(1)18字节;(3)6字节;(3)88字节;(4)30字节。
3、指出以下指令中哪些是无效的,并说明原因。
(1)ADDR DB $(2)DATA DB F0H,12H(3)1_DATA DW 1234H(4)@VAR DW V AR1 ;VAR1为一个字节变量(5)MOV AX,[10-VAR1] ;VAR1为一个字变量(6)MOV BX,[VAR2*2+1] ;VAR2为一个字变量解:(1)非法,地址计数器$是32位数;(2)非法,以字母开头的16进制数应在前面加“0”,即应为“0F0H”;(3)非法,变量名非法,不能以数字开头;(4)合法;(5)非法,地址表达式不能是“常数-地址”;(6)非法,地址表达式不能出现乘法。
4、假设已定义数据段如下:DATA SEGMENTORG 100HDATA1 DB 10 DUP(1,2,3)DATA2 DW DATA1,$DATA ENDS且段寄存器DS已初始化为该数据段的段基址(假设段基址为1234H)。
请指出以下指令执行后,相应的寄存器中的内容。
(1)MOV AX,WORD PTR DATA1 ;(AX)=?(2)MOV BX,DATA2 ;(BX)=?(3)MOV CX,DATA2+2 ;(CX)=?(4)MOV DX,OFFSET DATA2 ;(DX)=?(5)MOV SI,SEG DATA1 ;(SI)=?(6)MOV DI,LENGTH DATA1 ;(DI)=?(7)MOV SP,TYPE DATA1 ;(SP)=?(8)MOV BP,SIZE DATA2 ;(BP)=? 解:(注意是16进制,算的时候要转换) (1)(AX)=0201H;(2)(BX)=0100H;(3)(CX)=0120H;(4)(DX)=011EH;(5)(SI)=1234H;(6)(DI)=000AH;(7)(SP)=0001H;(8)(BP)=0002H。
2.16编写程序段,使(AH)与( AL)中的内容互换。
解1MOV BL,ALMOV AL,AH.MOV AH,BL解2XCHG AH,AL2.17编写程序段,使(BL)中高 4 位与低4 位内容互换。
解1MOV CL,4MOV BH,0SHL BX,CLADD BL,BH解2MOV CL,4ROL BL,CL2.18编写程序段,实现当(DL)是奇数时使(AL)=31H,否则使(AL)=30H。
SHR DL,1MOV AL,0RCL AL,1ADD AL,30H2.20设寄存器AX中存放1234H,BX寄存器中存放 1 ,执行DIV BL 指令后,会发生什么现象?为什么?溢出,商超过8位,在AL中存放不下商。
2.21设DX 寄存器中存放值为0 ,AX中存放1234H,BX中存放 1 ,执行DIV BX 后,是否会出现与 2.20 相同现象?为什么?不会,因为是16位除法,商未超过16位2.22一字数据压栈时堆栈指针如何改变?弹出一字数据时堆栈指针如何改变?压栈时堆栈指针减2;弹出一字数据时堆栈指针加22.23 已知(SP)=2088H,(AX)=1A89H,(BX)=90CDH。
依次执行以下三条指令后,画图说明堆栈中数据情况,及SP、AX、BX中数据。
PUSH AXPUSH BXPOP AX(SP)=2086H,(AX)=90CDH,(BX)=90CDH。
*2.25编写程序段求8!(8的阶乘)。
MOV AX,8MOV BX,7NEXT:DX,0MUL BXDEC BXJNZ NEXT2.27假设(AX)=07EH,变量BUFFER中存放的内容为B5H,求下列各条指令单独执行后的结果。
(1)AND AX,BUFFER 34H(2)XOR AX,BUFFER CBH(3)OR AX,BUFFER 0FFH(4)AND AX,0 0(5)XOR AX,OFFH 81H(6)TEST AX,8000H 相与结果为0时。
3.知识点:0403(汇编语言程序格式) *汇编语言源程序经汇编程序汇编后产生的文件的扩展名是(B)。
选项A)MAP选项B)OBJ选项C)ASM选项D)EXE4.知识点:0403(汇编语言程序格式) *汇编语言的什么文件经链接(LINK)后产生可执行文件?(D)选项A)EXE选项B)OBJ选项C)MAP选项D)LST7. 知识点:0401(汇编程序功能) *汇编语言源程序是(A)程序。
选项A)不可直接执行的选项B)经连接后就可直接执行的选项C)经汇编程序汇编后就可执行的选项D)可直接执行的14知识点:0302(程序占有的空间和执行时间) **如果指令的运算结果为0,则(C)标志位为1。
选项A)SF选项B)CF选项C)ZF选项D)OF15知识点:0302(程序占有的空间和执行时间) **如果指令的运算结果中有奇数个1,则(C)标志位为0。
选项A)OF选项B)CF选项C)PF选项D)SF16. 知识点:0301(80x86的寻址方式) *IBM PC机的内存是按(D)是编址的。
选项A)位选项B)双字选项C)字选项D)字节23知识点:0301(80x86的寻址方式80x86的寻址方式) **如果内存的某一单元的物理地址为12345H。
则它的逻辑地址为(C):0345H。
选项A)0120H选项B)12000H选项C)1200H选项D)0012H24知识点:0301(80x86的寻址方式80x86的寻址方式) ***如果一个字变量中存放16个字,该字变量的起始地址为1000H:2000H,则该字变量数据区中的最末一个字单元的物理地址为( D)。
选项A)12020H选项B)12000H选项C)1201FH选项D)1201EH25知识点:0301(80x86的寻址方式80x86的寻址方式) **设22000H、22001H单元分别存放的数据为12H、34H,若要读取22000H字单元中的数据,此时读出的数据是(A)。
要点总结第二章微型计算机结构1.8086的段式存储结构段地址+偏移量地址=存储单元的物理地址或者,段寄存器的值*16+偏移地址=存储单元的物理地址2.段寄存器,通用寄存器,指针与变址寄存器,标志寄存器3.寻址方式(1)寻址方式的概念(2)寻址方式的分类(3)各寻址方式中对于寄存器的限制(4)各类寻址方式的格式第三章汇编语言(参照课件)1.汇编语句格式:[标号] 操作符操作数[;注释] 2.标号的概念以及其三个属性3.伪指令:(1)符号定义伪指令:EQU(2)数据定义伪指令:DB,DW(3)段定义伪指令:SEGMENT、ENDS、ASSUME 4、运算符(1)分析算符:SEG,,OFFSET ,SIZE,LENGTH(2)组合算符:PTR5.指令语句与伪指令语句的区别6.数据段、堆栈段、代码段的用途第四章指令及汇编程序设计1.数据传送指令:MOV、PUSH、POP、XCHG、XLAT2.算数运算指令:ADD、ADC、INC、SUB、SBB、DEC、NEG、3.逻辑运算指令:CMP、TEST、OR、AND、NOT、XOR4.移位指令:逻辑左移/右移,算数左移/右移,循环左移/右移,带进位的循环左移/右移;以及移位指令对于CF、OF标志位的影响分支结构程序设计1.无条件转移指令2.有条件的转移指令(教材P102)3.分支程序编写循环结构程序设计1.循环控制指令LOOP、LOOPE/Z、LOOPNE/NZ以及他们的控制条件(对CF、ZF的判断)2.循环程序编写子程序设计1.子程序定义伪指令、调用指令、返回指令2.子程序设计中对于堆栈操作的要求第五章输入与输出中断1.中断向量表、中断向量的概念2.中断向量的修改3.中断的类型:软件中断、可屏蔽硬件中断、非屏蔽硬件中断;以及CPU队可屏蔽硬件中断和非屏蔽硬件中断的不同的响应条件4.8259的基本结构和工作原理5.8259的操作命令字:包括各个命令字的作用、格式、具体的操作6.软件中断与硬件中断的异同点第六章8254程序设计1.8254的基本结构和工作原理2.8254的命令字格式,以及对于8254各个计数器工作方式的设定8255程序设计1.8255的基本结构和工作原理2.8255的命令字格式,以及对于8255各端口的操作16550异步串行通信中,波特率的概念,数据帧的概念第七章简单外设LED的显示原理键盘的结构及扫描原理一些复习题习题一一、选择题1、8086CPU中程序计数器IP中存放的是。
本答案经本人简单作答、整理、修改(并是标准答案),仅供同学参考,欢迎同学提出宝贵意见。
4.10给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么答案:(1)立即寻址没有 IP的内容(2)直接寻址 7237H ;MOV AX,[7237H](3)使用BX的寄存器寻址没有 ;MOV AX,BX(4)使用BX的间接寻址 637DH ;MOV AX,[BX](5)使用BX的寄存器相对寻址 0D5B4H ;MOV AX,D[BX](6) 基址变址寻址 8E18H ;MOV AX,[BX][SI](7)相对基址变址 004FH ;MOV AX,D[BX][SI]4.11.求执行两条指令后,各标志位的状态MOV AL,91 ;执行后,(AL)=91=5BHADD AL,0BAH加法执行如下:0BA H 1011 1010+ 05B H 0101 1011115 H 1 0001 0101CF:显然最高位产生了进位(两个加数都是两位的,和却有三位),CF=1AF:低四位向高四位产生了进位(A+B产生进位),AF=1ZF:运算结果不为0,ZF=0SF:运算结果最高位为0(高四位:1H=0001B),SF=0OF:负+正=正(两个加数的符号位不同),没有溢出,OF=04-12(1)MOV AL,0F5H 正确(2)ADD [BX][BP],BX 错误,不能同时使用[BX][BP]进行寻址(3)CMP AL,100H 错误,AL为8位,100H大于8位,类型不匹配。
(4)TEST [BP],DL 正确(5)ADC 15,CL 错误,目的操作数不能是立即数(6)SUB [DI],DA_WORD 错误,两个操作数不能同时是存储器操作数。
(7)OR CH,CL 正确(8)MOV AL,1000H 错误,AL为8位,1000H为16位,类型不匹配。
(9)SAR 10H[DI],2 错误,AL为8位,移位多次必须CL中。
第3章 80X86的指令系统和寻址方式本章主要讲授:80X86的数据类型、寻址方式、指令格式、指令系统(数据传送指令、算术运算指令、逻辑运算指令、串操作数指令、控制转移指令、处理机指令和高级语言指令)和80486指令等。
通过本章的学习,注意下面几方面的内容:一、掌握80X86的数据类型;二、掌握80X86的寻址方式;三、掌握80X86的指令系统及它们的一些使用实例。
四、了解保护属性检查指令、高级语言指令以及Cache管理指令等。
习题精解1.已知DS=2000H,BX=0100H,SI=0002H,存储单元[20100H]~[20103H]依次存放12 3456 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明下列每条指令执行后AX寄存器的内容。
(1)MOV AX,1200H(2)MOV AX,BX(3)MOV AX,[1200H](4)MOV AX,[BX](5)MOV AX,[BX+1100H](6)MOV AX,[BX + SI](7)MOV AX,[BX][SI+1100H]参考答案:根据物理地址形成公式:物理地址=段基址×16+有效地址,得:(1)1200H(2)0100H(3)4C2AH(4)3412H(5)4C2AH(6)7856H(7) 65B7H分析:本题主要考查点是数据寻址方式,寻址方式就是指令中用于说明操作数所在地址的方法,或者是寻找操作数有效地址的方法。
包括数据寻址和转移地址寻址两大类。
80X86的数据寻址方式总结如下:(1) 立即寻址方式操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式就称为立即数寻址方式。
注:1、使用立即寻址的指令主要用来给寄存器赋初值,并且只能用于源操作数字段2、不能直接给段寄存器和标志寄存器赋予立即数。
例: MOV AL,5MOV AX,1234HMOV EAX,12345678H(2) 寄存器寻址方式操作数存放在指令规定的某个寄存器(如:对于16位操作数,寄存器可以是AX,BX,CX,DX,SI,DL,SP或BP;而对8位操作数,寄存器可以是AH,AL,BH,BL,CH,CL,DH 或DL)中。
1.伪指令语句与硬指令语句的本质区别是什么?伪指令语句有什么主要作用?
答:区别:伪指令语句是能执行的语句,硬指令语句是CPU可以执行的语句。
伪指令语句主要作用是为汇编程序提供解释说明,它仅仅是在汇编过程中告诉汇编程序如果进行汇编。
2.什么是标识符?汇编程序中标识符怎样组成?
答:是用户自己定义的符号名。
在汇编程序中标识符有两种:标号标识符,用在指令语句中,后面跟冒号,表示程序入口的逻辑地址。
符号(或名字)标识符,用在伪指令语句中,后面不跟冒号,通常是定义一个变量,或说明变量类型。
标识符一般不超31个字符,数字及常规符号($、@、?等)不能打头,也不能使用保留字。
标识不区分大小写。
4.汇编语句有哪两种,每个语句有哪4部分组成?
答:指令语句(又称执行语句)和伪指令语句(又称说明性语句)。
指令语句4部分包括,①标号:、②硬指令助记符、③操作数、④;注释。
伪指令语句4部分包括,①符号名、②伪指令助记符、③参数、④;注释。
5.汇编程序开发有哪4个步骤?分别利用什么程序完成,产生什么输出文件?
答:①编辑。
使用文本编辑器。
产生汇编源程序文件: 文件名.ASM。
源文件是文本文件。
②汇编。
使用汇编程序,如MASM或ML,排除程序中的语法错误。
产生目标文件:文件名.OBJ。
目标文件是二进制文件,是不能执行的文件。
③连接。
使用LINK。
产生可执行文件:文件名.EXE.
④调试。
使用DEBUG。
本身不产生文件,是对连接产生的可执行进行调试,排除程序中的算法错误,保证可执行文件的正确性。
7.假设MYWORD是一个字变量,MYBYTE1和MYBYTE2是两个字节变量,指出下列语句中的错误原因。
(1) MOV BYTE PTR[BX], 1000
答:数据类型不匹配,目的地址单元是字节单元,1000大于255。
无法存放。
(2) MOV BX, OFFSET[SI]
答:OFFSET后只能跟标识符。
(3) CMP MYBYTE1, MYBYTE2
答:CMP的两个操作数不能同时在存储器中。
(4) MOV AL, MYBYTE1+MYBYTE2
答:运算符只能对常数进行操作,不能对变量进行操作。
(5) SUB AL, MYWORD
答:数据类型不匹配,AL是8位的,MYWORD是16位变量。
(6) JNZ MYWORD
答:MYWORD是变量,其指的单元中存放的是操作数,不能用做跳转入口。
8.OPRL是个常数,请问下列语句中两个AND操作有什么不同?
AND AL, OPRL AND 0FEH
答:第一个AND是指令语句,在程序运行时才执行,第二个AND是逻辑运算符,
是在汇编时就对两个常量完成的关系运算。