1、第 1 章 汇编语言基础知识习题解答1.1 什么是汇编语言?汇编语言的特点是什么?答:为了克服机器语言难以记忆、表达和阅读的缺点,人们采用具有一定含义的符号作为助忆符,用指令助忆符、符号地址等组成的符号指令称为汇编格式指令(或汇编指令)。汇编语言是汇编指令集、伪指令集和使用它们规则的统称。汇编语言的特点是:(1)执行速度快。 (2)程序短小。(3) 可以直接控制硬件。(4) 可以方便地编译。(5)辅助计算机工作者掌握计算机体系结构。(6)程序编制耗时,可读性差。 (7)程序可移植性差。1.2 把下列十进制数转换成二进制数、八进制数、十六进制数。 127 1021 0.875 6.25答: 11
2、11111B;177Q;7FH 1111111101;1775Q;3FDH 0.111 B;0.7Q;0.EH 110.01B;6.2Q;6.4H1.3 把下列二进制数转换成十进制数。 1001.11 101011.10011 111.011 1011.1答: 9.75D 43.59375D 7.375D 11.5D1.4 把下列八进制数转换成十进制数。 573.06 75.23 431.7 123.45答: 379.09375D 61.296875D 281.875 83.5781251.5 把下列十六进制数转换成十进制数。 0D5.F4 8BA.7C 0B2E.3A 6EC.2D答: 21
3、3.953125D 2234.484375 2862.2265625 1772.175781251.6 把下列英文单词转换成 ASCII 编码的字符串。 Upper Blow Computer What答: 55H,70H,70H,65H,72H 53H,6CH,6FH ,77H 43H,6FH,6DH,70H,75H,74H,65H,72H 57H,68H,61H,74H1.7 求下列带符号十进制数的 8 位基 2 码补码。 +127 2 128 +2答: 01111111B 11111110B 10000000B 00000010B1.8 求下列带符号十进制数的 16 位基 2 码补码。
4、+628 9 1234 +3249答: 0000001001110100B 1111111111110111B 1111101100101110B 110010110001B1.9 下列各数均为十进制数,请用 8 位二进制补码计算下列各题,并用十六进制数表示其运算结果。 68+(53) 6853 68(53) (68)53答: 0FH 0FH 0A1H 87H1.10 汉字在输入、存储、输出过程中所使用的汉字编码是否一样?使用的是什么编码?答:在汉字的输入、存储、输出过程中所使用的汉字编码是不一样的,输入时有输入编码,存储时有汉字机内码,输出时有汉字字形码。第 2 章 IBM-PC 系统结构习
5、题解答2.1 什么是微型计算机?微型计算机主要由哪几部分组成?其主要功能是什么?答:微型计算机是指以大规模、超大规模集成电路为主要部件,以集成了计算机主要部件控制器和运算器的微处理器为核心所构造出的计算机系统。微型计算机主要由微处理器、存储器、系统总线、I/O 接口电路和 I/O 设备组成。微处理器用来执行程序指令,完成所有的算术和逻辑运算及全机的控制工作;存储器用来存放程序和数据;系统总线是计算机各功能部件之间进行信息传输的通道;I/O 设备是指微型计算机配备的输入输出设备,也称外围设备(简称外设) ,用来提供具体的输入输出手段。2.2 8086/8088CPU 由哪两部分组成?它们的主要功
6、能是什么?答:8086/8088CPU 由总线接口部件 BIU(Bus Interface Unit)和执行部件 EU(Execution Unit)两部分组成。总线接口部件 BIU 是 8086 与系统总线的接口,负责 CPU 与存储器、IO 端口传送数据;执行部件 EU 负责指令的执行和数据的运算。2.3 8086/8088CPU 有哪些寄存器?各有什么用途?答:8086/8088 内部的寄存器可分为通用寄存器、专用寄存器和段寄存器。8086/8088 有 8 个 16 位的通用寄存器,包括 4 个数据寄存器(AX、BX、CX、DX ) 、2 个变址寄存器(SI 和 DI)和 2 个指针寄
7、存器(BP 和 SP)。它们均可以用于保存算术逻辑运算中的操作数和运算结果,但每个寄存器又有各自规定的专门用途。AX 通常称为累加器(Accumulator),用于算术运算、逻辑运算以及与外设传送信息等,它是汇编编程中使用频率最高的一个寄存器。BX 称为基址寄存器(Base Address Register) ,常用来存放存储器地址。CX 称为计数寄存器(Count Register) ,常用来保存计数值。 DX 称为数据寄存器(Data Register) ,常用来存放双字长数据的高 16 位,也用于存放 I/O 的端口地址。SI 称为源变址(Source Index)寄存器,DI 称为目的
8、变址(Destination Index)寄存器,主要用于存储器寻址方式时提供偏移地址。SI 和 DI 一般与数据段寄存器 DS 联用,用来确定数据段中某存储单元的地址。在串操作指令中,还有专用的用法:SI 和数据段寄存器 DS 联用,DI 和附加段寄存器 ES 联用,分别用来寻址数据段中的源操作数和附加段的目的操作数。BP 称为基址指针(Base Pointer)寄存器,SP 称为堆栈指针( Stack Pointer)寄存器,它们主要用于指向堆栈段中的存储单元。BP 与堆栈段寄存器 SS 联用,用来确定堆栈段中某存储单元的地址,BP 主要用于给出堆栈中基地址,用它可直接存取堆栈中的数据;
9、SP 与堆栈段寄存器 SS 联用,用来确定堆栈段中栈顶的地址,SP 保存堆栈栈顶的偏移地址,用它只可访问栈顶。IP(Instruction Pointer)为指令指针寄存器,用来存将要执行的指令在代码段中的偏移地址。它和代码段寄存器 CS 一起可以确定下一条的指令的物理地址。标志寄存器 FLAGS 也被称为程序状态寄存器 PSW,用来存放状态标志和控制标志的寄存器。8086/8088 有 4 个 16 位段寄存器,分别为代码段寄存器 CS、数据段寄存器 DS、堆栈段寄存器 SS 和附加段寄存器 ES。段寄存器是根据内存分段的管理模式而设置的,专门用于存放段地址。CS(Code Segment
10、Register)称为代码段寄存器,用来存放代码段的段地址;DS(Data Segment Register)称为数据段寄存器,用来存放数据段的段地址;ES(Extra Segment Register)称为附加段寄存器,用来存放附加段的段地址;SS(Stack Segment Register)称为堆栈段寄存器,用来存放堆栈段的段地址。2.4 8086/8088CPU 哪些寄存器可以用来指示存储器地址?答:BX、SI、DI、BP、SP、IP、 CS、DS、ES、SS。2.5 标志寄存器中有哪些状态标志和控制标志?它们每一位所表示的含义是什么?答:标志寄存器中有 6 个状态标志(CF、PF、A
11、F、ZF、SF、OF)和 3 个控制标志(TF、 IF、DF) 。状态标志用来记录程序运行结果的状态信息,它们是根据有关指令的执行结果由 CPU自动设置的,常用作条件转移指令的转移控制条件。CF( Carry Flag)进位标志,主要用来反映运算是否产生进位或借位,如果运算结果的最高位有效位产生进位或借位时,进位标志置 1,即 CF1,否则置 0。PF(Parity Flag )奇偶标志,用于反映运算结果中 “1”的个数的奇偶性,当运算结果最低字节中“1”的个数为零或偶数时,PF1,否则PF 0。AF(Auxiliary carry Falg)辅助进位标志,记录运算时第 3 位(低半字节)产生
12、的进位值,辅助进位标志一般在 BCD 码运算中作为是否进行十进制调整的判断依据。ZF(Zero Flag)零标志,用来反映运算结果是否为 0,运算结果为 0 时 ZF 位置 1,否则置0。SF (Sign Flag )符号标志,记录运算结果的符号,它与运算结果的最高位相同,结果为负时置 1,否则置 0。OF(Overflow Flag)溢出标志,用于反映有符号数运算结果是否溢出,在运算过程中,如操作数超出了机器能表示的范围,则称为溢出,此时 OF 位置 1,否则置 0。控制标志用于控制处理器的操作,可根据需要用指令设置。TF(Trap Flag)追踪标志,也称单步标志,当追踪标志 TF 为 1
13、 时,CPU 进入单步方式即 CPU 每执行一条指令后,产生一个单步中断,通常用于程序的调试;当追踪标志 TF 为 0 时,处理器正常工作。IF(Interrupt Flag)中断标志,当 IF=1 时,CPU 可以响应可屏蔽中断请求;当 IF=0 时,CPU 不响应 CPU 外部的可屏蔽中断发出的中断请求。 DF(Direction Flag)方向标志,用于在串处理指令中控制地址的变化方向,当 DF 位为 1 时,每次操作后变址寄存器 SI 和 DI自动减少,串处理从高地址向低地址方向处理;当 DF 为 0 时,则使 SI 和 DI 自动增加,使串处理从低地址向高地址方向处理。2.6 有两个
14、 16 位数 3A4BH 和 10EFH 分别存放在 2000H 和 2004H 存储单元中,请用图表示出它们在存储器里的存放情况。答:2000H 4BH2001H 3AH2002H2003H2004H EFH2005H 10H2.7 一个存储单元的物理地址、段地址、偏移地址三者之间有何关系?答:20 位的物理地址由 16 位的段地址和 16 位的段内偏移地址组成。物理地址 PA(Physical Address)的计算方法如下:物理地址 PA=段地址10H+偏移地址2.8 在 DEBUG 程序中,一条指令语句表示为 2000:0030 MOV AL,8。请问:段地址、偏移地址和物理地址分别为
15、多少?存放段地址和偏移地址的寄存器是哪两个?答:段地址:2000H。偏移地址: 0030H。物理地址:20030H。存放段地址的寄存器是CS。存放偏移地址的寄存器是 IP。第 3 章 8086/8088 寻址方式和指令系统习题解答一、填空3.1 指出下列指令源操作数的寻址方式:MOV AX,ARRAYSI ; MOV AX,ES:BX ; MOV AX,100 ; MOV AX,BX+DI ; MOV AX,BX ; MOV AX,2000H ; MOV AX,ARRAYBXSI ; MOV AX,DI+20H ; 答:寄存器相对寻址;寄存器间接寻址;直接寻址;基址变址寻址;寄存器寻址;立即数
16、寻址;相对基址变址寻址;寄存器相对寻址。3.2 假设(SP)=100H,(SS)=1000H,执行PUSH BP指令后,栈顶的物理地址是 。答:10102H3.3 段地址和偏移地址为3FFFH:1234H,它的物理地址是 ,段地址和偏移地址为1000H:000FH,它的物理地址是 。答:41224H,1000FH3.4 若要测试AL寄存器中操作数的第0,3,4,7位是否均为0,然后根据测试结果实现条件转移,可使用 指令,以产生转移条件。这条指令执行后将影响的标志位是 。答:TEST AL,0A9H;SF,ZF,PF3.5 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(
17、20100H)=12H,(20101)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H,下列指令执行后AX寄存器的内容:MOV AX,1200H ;(AX)= MOV AX,BX ;(AX)= MOV AX,1200H ;(AX)= MOV AX,BX ;(AX)= MOV AX,1100HBX ;(AX)= MOV AX,BXSI ;(AX)= MOV AX,1100HBX+SI ;(AX)= 答:1200H,0100H,4C2AH,3412H,4C2AH,7856H,65B
18、7H3.6 设(BX)=101H,(DS)=2100H ,(CS)=1900H,内存中(21101H)=0C7H,(21102H)=0FFH,(21103H)=00H,(21104H)=0F0H,执行如下指令后CS和IP寄存器的值是多少?JMP BX ;(CS)= ,(IP)= JMP BX ;(CS)= ,(IP)= JMP WORD PTRBX+1 ;(CS)= ,(IP)= JMP DWORD PTRBX ;(CS)= ,(IP)= 答:1900H,0101H;1900H,0FFC7H;1900H,0FFH;0F000H,FFC7H3.7 试根据以下要求写出相应的汇编语言指令。把BX寄存
19、器和DX寄存器内容相加,结果存入DX寄存器中,汇编语言指令: ;用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。汇编语言指令: ;用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器内容相加,并把结果送回到存储器中。汇编语言指令: ;用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。汇编语言指令: ;把数0B5H与AL寄存器内容相加,并把结果送回AL寄存器中。汇编语言指令: ;答:(1)ADD DX,BX (2)ADD AL,BYTE PTR BXSI (3)ADD
20、 BX+0B2H,CX(4)ADD 0524H,2A59H (5)ADD AL,0B5H3.8 指令SAR可用来 除2,而指令SHR可用来 除2。答:带符号数,无符号数3.9 条件转移指令的目标地址应在本条指令的下一条指令的 个字节范围内。答:23.10 执行指令XOR AX,AX的含义是 。答:将AX清零3.11 一个有16个字的数据区,它的起始地址为70A0H:DDF6H,那么该数据区的最后一个字单元的物理地址为 H。答:7E814H3.12 串处理指令规定源寄存器使用 ,源串在 段中;目的寄存器使用 ,目的串必须在 段中。答:SI,数据段,DI,附加段3.13 执行加法指令时,如果两个操
21、作数的符号相同,而结果的符号与之相反,则OF;执行减法指令时,如果两个操作数的符号相反,而结果的符号与减数相同,则OF= 。答:1,13.14 数据串传送指令执行前应做 、 、 、四项准备工作。答:置源串首地址、置目的串首地址、置串长、置方向标志二、选择题(可多选)3.15 基址寄存器的内容、变址寄存器的内容以及指令中指定的位移量三者之和作为操作数的有效地址,它的寻址方式是 。A、直接寻址方式 B、寄存器相对寻址方式C、基址变址寻址方式 D、相对基址变址寻址方式3.16 完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是 。A、MOV AL,00H B、AND AL,00H C、XO
22、R AL,AL D、SUB AL,AL3.17 指令TEST AL,02H的含义是 。A、测试AL是否等于02H B、测试AL第二位的状态C、测试AL第一位的状态 D、将AL的第一位和02单元的各位进行测试3.18 8086CPU在执行8位有符号数运算后,产生溢出是结果超出了 。A、0255 B、+128-128 C、+255-256 D、+127-1283.19 不能改变8086程序计数指针IP的指令是 。A、RET B、PUSH AX C、CALL D、JBE3.20 不影响8086堆栈指针SP值的指令是 。A、JMP B、PUSH AX C、POP CX D、INT 21H3.21 80
23、86中执行指令RET 04H表示 。A、返回到04H单元 B、作段间返回C、返回到当前地址后第4个单元 D、完成RET指令后SP加43.22 下列不正确的指令是(DATA已定义) 。A、MOV 4DI,02H B、MOV BYTE PTR4DI,02HC、MOV 4DI,AL D、MOV DATADI,02H3.23 假设V1和V2是用DW定义的变量,下列指令中正确的是 。A、MOV V1,20H B、MOV V1,V2C、MOV AL,V1 D、MOV 2000H,V23.24 下列哪条指令不合法? A、INT AX,0278H B、ROR DX,CL C、CMPSB D、RET 43.25
24、 下列指令中,有语法错误的是 。A、MOV SI,DI B、IN AL,DXC、JMP WPRD PTRBX D、PUSH WORD PTR 20BX+SI-23.26 下列4条指令中, 是错误的。A、MOV DS,2000H B、ADD DX,BPC、MOV AX,200 D、MOV AX,ARRAYSI+23.27 运算型指令的寻址和转移型指令的寻址,其不同点在于 。A、前者取操作数,后者决定程序的转移地址B、后者取操作数,前者决定转移地址C、两者都是取操作数D、两者都是决定程序的转移地址3.28 下列指令中操作数在代码段中的是 。A、MOV AL,25H B、ADD BH,AL C、IN
25、C DS:25H D、CMP AL,BL3.29 设(BL)=5,要使结果(BL)=0AH,应执行指令是 。A、AND BL,0FH B、NOT BL C、XOR BL,0FH D、OR BL,0FH3.30 指令JMP DWORD PTRBXSI属于 寻址。A、寄存器间接寻址 B、相对基址变址寻址C、段内转移直接寻址 D、段间转移间接寻址3.31 在下列指令中, 指令的执行会影响条件码的CF位。A、JMP NEXT B、JC NEXT C、INC BX D、SHL AX,13.32 将累加器AX的内容清零的正确指令是 。A、OR AX,0 B、XOR AX,AX C、TEST AX,AX D
26、、CMP AX,AX答:3.15 D3.16 A3.17 C3.18 D3.19 B3.20 A3.21 D3.22 A3.23 A3.24 C3.25 A3.26 A3.27 A3.28 A3.29 C3.30 D3.31 D3.32 B三、简答题3.33 PUSH和POP指令有什么特点?答:这两条指令都不影响标志位,而且由于堆栈操作必需以字为单位,所以它们只能做字操作,不能使用立即寻址方式。3.34 算术移位指令和逻辑移位指令有什么不同?答:移位指令常用于乘2除2操作。其中,算术移位用于带符号数;逻辑移位用于无符号数。3.35 串处理指令有什么特殊规定?简述REPZ CMPSB指令的执行过
27、程。答:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI和DI寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。REPZ CMPSB指令对两个字节型字符串比较,找到第一个不相等的字节结束。3.36 完成下列操作,选用什么指令?将AX的内容减去0520H和上次运算的借位;将变量名TABL的段地址送AX;答:(1)sbb ax,0520H(2)3.37 条件转移指令和无条件转移指令有什么不同?答:条件转移指令只能实现偏移量为-128至+127字节范围的转移;无条件转移指令根据寻址方式可实现短转移(偏移量为-128至+127字节),段内转移,段间转移。第 4 章 8086
28、/8088 汇编语言(格式)习题解答一、填空题答:4.1 有关操作数的伪指令中,算术运算符有+、-、*、/和 MOD,逻辑运算符有AND、OR、XOR 和 NOT,关系操作符有 EQ(相等)、NE(不等) 、LT(小于) 、GT(大于) 、LE(小于或等于) 、GE(大于或等于) ,数值运算符有TYPE、LENGTH、SIZE、OFFSET、SEG,属性操作符 PTR、THIS、段属性前缀、SHORT、HIGH 和 LOW。4.2 下列两个语句的区别在于 X1 不可以重复定义,X2 可以重复定义。X1 EQU 1000HX2=1000H4.3 假设 (DS)=3000HORG 3100HTABLE DB 10,3*4,10HADDRESS DD TABLE
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。