第1章汇编语言基础知识习题解答1.1 什么是汇编语言?汇编语言的特点是什么?答:为了克服机器语言难以记忆、表达和阅读的缺点,人们采用具有一定含义的符号作为助忆符,用指令助忆符、符号地址等组成的符号指令称为汇编格式指令(或汇编指令)。
汇编语言是汇编指令集、伪指令集和使用它们规则的统称。
汇编语言的特点是:(1)执行速度快。
(2)程序短小。
(3)可以直接控制硬件。
(4)可以方便地编译。
(5)辅助计算机工作者掌握计算机体系结构。
(6)程序编制耗时,可读性差。
(7)程序可移植性差。
1.2 把下列十进制数转换成二进制数、八进制数、十六进制数。
① 127 ② 1021 ③ 0.875 ④ 6.25答:① 1111111B;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答:① 213.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码补码。
① +628 ②−9 ③−1234 ④ +3249答:① 0000001001110100B ② 1111111111110111B③ 1111101100101110B ④ 110010110001B1.9 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
① 68+(―53)② 68―53 ③ 68―(―53)④(―68)―53答:① 0FH ②0FH ③ 0A1H ④87H1.10 汉字在输入、存储、输出过程中所使用的汉字编码是否一样?使用的是什么编码?答:在汉字的输入、存储、输出过程中所使用的汉字编码是不一样的,输入时有输入编码,存储时有汉字机内码,输出时有汉字字形码。
第2章IBM-PC系统结构习题解答2.1什么是微型计算机?微型计算机主要由哪几部分组成?其主要功能是什么?答:微型计算机是指以大规模、超大规模集成电路为主要部件,以集成了计算机主要部件——控制器和运算器的微处理器为核心所构造出的计算机系统。
微型计算机主要由微处理器、存储器、系统总线、I/O接口电路和I/O设备组成。
微处理器用来执行程序指令,完成所有的算术和逻辑运算及全机的控制工作;存储器用来存放程序和数据;系统总线是计算机各功能部件之间进行信息传输的通道;I/O设备是指微型计算机配备的输入输出设备,也称外围设备(简称外设),用来提供具体的输入输出手段。
2.2 8086/8088CPU由哪两部分组成?它们的主要功能是什么?答:8086/8088CPU由总线接口部件BIU(Bus Interface Unit)和执行部件EU(Execution Unit)两部分组成。
总线接口部件BIU是8086与系统总线的接口,负责CPU与存储器、I/O端口传送数据;执行部件EU负责指令的执行和数据的运算。
2.3 8086/8088CPU有哪些寄存器?各有什么用途?答:8086/8088内部的寄存器可分为通用寄存器、专用寄存器和段寄存器。
8086/8088有8个16位的通用寄存器,包括4个数据寄存器(AX、BX、CX、DX)、2个变址寄存器(SI和DI)和2个指针寄存器(BP和SP)。
它们均可以用于保存算术逻辑运算中的操作数和运算结果,但每个寄存器又有各自规定的专门用途。
AX通常称为累加器(Accumulator),用于算术运算、逻辑运算以及与外设传送信息等,它是汇编编程中使用频率最高的一个寄存器。
BX称为基址寄存器(Base Address Register) ,常用来存放存储器地址。
CX称为计数寄存器(Count Register) ,常用来保存计数值。
DX称为数据寄存器(Data Register) ,常用来存放双字长数据的高16位,也用于存放I/O的端口地址。
SI称为源变址(Source Index)寄存器,DI称为目的变址(Destination Index)寄存器,主要用于存储器寻址方式时提供偏移地址。
SI和DI一般与数据段寄存器DS联用,用来确定数据段中某存储单元的地址。
在串操作指令中,还有专用的用法:SI和数据段寄存器DS联用,DI和附加段寄存器ES联用,分别用来寻址数据段中的源操作数和附加段的目的操作数。
BP称为基址指针(Base Pointer)寄存器,SP称为堆栈指针(Stack Pointer)寄存器,它们主要用于指向堆栈段中的存储单元。
BP与堆栈段寄存器SS联用,用来确定堆栈段中某存储单元的地址,BP主要用于给出堆栈中基地址,用它可直接存取堆栈中的数据;SP与堆栈段寄存器SS联用,用来确定堆栈段中栈顶的地址,SP保存堆栈栈顶的偏移地址,用它只可访问栈顶。
IP(Instruction Pointer)为指令指针寄存器,用来存将要执行的指令在代码段中的偏移地址。
它和代码段寄存器CS一起可以确定下一条的指令的物理地址。
标志寄存器FLAGS也被称为程序状态寄存器PSW,用来存放状态标志和控制标志的寄存器。
8086/8088有4个16位段寄存器,分别为代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加段寄存器ES。
段寄存器是根据内存分段的管理模式而设置的,专门用于存放段地址。
CS(Code Segment 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、AF、ZF、SF、OF)和3个控制标志(TF、IF、DF)。
状态标志用来记录程序运行结果的状态信息,它们是根据有关指令的执行结果由CPU自动设置的,常用作条件转移指令的转移控制条件。
CF(Carry Flag)进位标志,主要用来反映运算是否产生进位或借位,如果运算结果的最高位有效位产生进位或借位时,进位标志置1,即CF=1,否则置0。
PF(Parity Flag)奇偶标志,用于反映运算结果中“1”的个数的奇偶性,当运算结果最低字节中“1”的个数为零或偶数时,PF=1,否则PF=0。
AF(Auxiliary carry Falg)辅助进位标志,记录运算时第3位(低半字节)产生的进位值,辅助进位标志一般在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时,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有两个16位数3A4BH和10EFH分别存放在2000H和2004H存储单元中,请用图表示出它们在存储器里的存放情况。
答:2000H2001H2002H2003H2004H2005H2.7一个存储单元的物理地址、段地址、偏移地址三者之间有何关系?答:20位的物理地址由16位的段地址和16位的段内偏移地址组成。
物理地址PA(Physical Address)的计算方法如下:物理地址PA=段地址×10H+偏移地址2.8在DEBUG程序中,一条指令语句表示为2000:0030 MOV AL,8。
请问:段地址、偏移地址和物理地址分别为多少?存放段地址和偏移地址的寄存器是哪两个?答:段地址:2000H。
偏移地址:0030H。
物理地址:20030H。
存放段地址的寄存器是CS。
存放偏移地址的寄存器是IP。
第3章 8086/8088寻址方式和指令系统习题解答一、填空3.1 指出下列指令源操作数的寻址方式:MOV AX,ARRAY[SI] ;MOV AX,ES:[BX] ;MOV AX,[100] ;MOV AX,[BX+DI] ;MOV AX,BX ;MOV AX,2000H ;MOV AX,ARRAY[BX][SI] ;MOV AX,[DI+20H] ;答:寄存器相对寻址;寄存器间接寻址;直接寻址;基址变址寻址;寄存器寻址;立即数寻址;相对基址变址寻址;寄存器相对寻址。