第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.111B;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.28086/8088CPU由哪两部分组成?它们的主要功能是什么?答:8086/8088CPU由总线接口部件BIU(BusInterfaceUnit)和执行部件EU(ExecutionUnit)两部分组成。总线接口部件BIU是8086与系统总线的接口,负责CPU与存储器、I/O端口传送数据;执行部件EU负责指令的执行和数据的运算。2.38086/8088CPU有哪些寄存器?各有什么用途?答:8086/8088内部的寄存器可分为通用寄存器、专用寄存器和段寄存器。8086/8088有8个16位的通用寄存器,包括4个数据寄存器(AX、BX、CX、DX)、2个变址寄存器(SI和DI)和2个指针寄存器(BP和SP)。它们均可以用于保存算术逻辑运算中的操作数和运算结果,但每个寄存器又有各自规定的专门用途。AX通常称为累加器(Accumulator),用于算术运算、逻辑运算以及与外设传送信息等,它是汇编编程中使用频率最高的一个寄存器。BX称为基址寄存器(BaseAddressRegister),常用来存放存储器地址。CX称为计数寄存器(CountRegister),常用来保存计数值。DX称为数据寄存器(DataRegister),常用来存放双字长数据的高16位,也用于存放I/O的端口地址。SI称为源变址(SourceIndex)寄存器,DI称为目的变址(DestinationIndex)寄存器,主要用于存储器寻址方式时提供偏移地址。SI和DI一般与数据段寄存器DS联用,用来确定数据段中某存储单元的地址。在串操作指令中,还有专用的用法:SI和数据段寄存器DS联用,DI和附加段寄存器ES联用,分别用来寻址数据段中的源操作数和附加段的目的操作数。BP称为基址指针(BasePointer)寄存器,SP称为堆栈指针(StackPointer)寄存器,它们主要用于指向堆栈段中的存储单元。BP与堆栈段寄存器SS联用,用来确定堆栈段中某存储单元的地址,BP主要用于给出堆栈中基地址,用它可直接存取堆栈中的数据;SP与堆栈段寄存器SS联用,用来确定堆栈段中栈顶的地址,SP保存堆栈栈顶的偏移地址,用它只可访问栈顶。IP(InstructionPointer)为指令指针寄存器,用来存将要执行的指令在代码段中的偏移地址。它和代码段寄存器CS一起可以确定下一条的指令的物理地址。标志寄存器FLAGS也被称为程序状态寄存器PSW,用来存放状态标志和控制标志的寄存器。8086/8088有4个16位段寄存器,分别为代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加段寄存器ES。段寄存器是根据内存分段的管理模式而设置的,专门用于存放段地址。CS(CodeSegmentRegister)称为代码段寄存器,用来存放代码段的段地址;DS(DataSegmentRegister)称为数据段寄存器,用来存放数据段的段地址;ES(ExtraSegmentRegister)称为附加段寄存器,用来存放附加段的段地址;SS(StackSegmentRegister)称为堆栈段寄存器,用来存放堆栈段的段地址。2.48086/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(CarryFlag)进位标志,主要用来反映运算是否产生进位或借位,如果运算结果的最高位有效位产生进位或借位时,进位标志置1,即CF=1,否则置0。PF(ParityFlag)奇偶标志,用于反映运算结果中“1”的个数的奇偶性,当运算结果最低字节中“1”的个数为零或偶数时,PF=1,否则PF=0。AF(AuxiliarycarryFalg)辅助进位标志,记录运算时第3位(低半字节)产生的进位值,辅助进位标志一般在BCD码运算中作为是否进行十进制调整的判断依据。ZF(ZeroFlag)零标志,用来反映运算结果是否为0,运算结果为0时ZF位置1,否则置0。SF(SignFlag)符号标志,记录运算结果的符号,它与运算结果的最高位相同,结果为负时置1,否则置0。OF(OverflowFlag)溢出标志,用于反映有符号数运算结果是否溢出,在运算过程中,如操作数超出了机器能表示的范围,则称为溢出,此时OF位置1,否则置0。控制标志用于控制处理器的操作,可根据需要用指令设置。TF(TrapFlag)追踪标志,也称单步标志,当追踪标志TF为1时,CPU进入单步方式即CPU每执行一条指令后,产生一个单步中断,通常用于程序的调试;当追踪标志TF为0时,处理器正常工作。IF(InterruptFlag)中断标志,当IF=1时,CPU可以响应可屏蔽中断请求;当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。DF(DirectionFlag)方向标志,用于在串处理指令中控制地址的变化方向,当DF位为1时,每次操作后变址寄存器SI和DI自动减少,串处理从高地址向低地址方向处理;当DF为0时,则使SI和DI自动增加,使串处理从低地址向高地址方向处理。2.6有两个16位数3A4BH和10EFH分别存放在2000H和2004H存储单元中,请用图表示出它们在存储器里的存放情况。答:2000H4BH2001H3AH2002H2003H2004HEFH2005H10H2.7一个存储单元的物理地址、段地址、偏移地址三者之间有何关系?答:20位的物理地址由16位的段地址和16位的段内偏移地址组成。物理地址PA(PhysicalAddress)的计算方法如下:物理地址PA=段地址×10H+偏移地址2.8在DEBUG程序中,一条指令语句表示为2000:0030MOVAL,8。请问:段地址、偏移地址和物理地址分别为多少?存放段地址和偏移地址的寄存器是哪两个?答:段地址:2000H。偏移地址:0030H。物理地址:20030H。存放段地址的寄存器是CS。存放偏移地址的寄存器是IP。第3章8086/8088寻址方式和指令系统习题解答一、填空3.1指出下列指令源操作数的寻址方式:MOVAX,ARRAY[SI];MOVAX,ES:[BX];MOVAX,[100];MOVAX,[BX+DI];MOVAX,BX;MOVAX,2000H;MOVAX,ARRAY[BX][SI];MOVAX,[DI+20H];答:寄存器相对寻址;寄存器间接寻址;直接寻址;基址变址寻址;寄存器寻址;立即数寻址;相对基址变址寻址;寄存器相对寻址。3.2假设(SP)=100H,(SS)=1000H,执行PUSHBP指令后,栈顶的物理地址是。答:10102H3.3段地址和偏移地址为3FFFH:1234H,它的物理地址是,段地址和偏移地址为1000H:000FH,它的物理地址是。答:41224H,1000FH3.4若要测试AL寄存器中操作数的第0,3,4,7位是否均为0,然后根据测试结果实现条件转移,可使用指令,以产生转移条件。这条指令执行后将影响的标志位是。答:TESTAL,0A9H;SF,ZF,PF3.5现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H,下列指令执行后AX寄存器的内容:MOVAX,1200H;(AX)=MOVAX,BX;(AX)=MOVAX,[1200H];(AX)=MOVAX,[BX];(AX)=MOVAX,1100H[BX];(AX)=MOVAX,[BX][SI];(AX)=MOVAX,1100H[BX+SI];(AX)=答:1200H,0100H,4C2AH,3412H,4C2AH,7856H,65B7H3.6设(BX)=101H,(DS)=2100H,(CS)=1900H,内存中(21101H)=0C7H,(21102H)=0FFH,(21103H)=00H,(21104H)=0F0H,执行如下指令后CS和IP寄存器的值是多少?JMPBX;(CS)=,(IP)=JMP[BX];(CS)=,(IP)=JMPWORDPTR[BX+1];(CS)=,(