微机原理题库_第1页
微机原理题库_第2页
微机原理题库_第3页
微机原理题库_第4页
微机原理题库_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[键入文字] [键入文字][键入文字]PAGEPAGE48第1章微型计算机基础知识填空题将10110.10111B的十六进制数是_______________,34.97H的十进制数是_______________,将114.35转换为二进制为______________。解答:10110.10111B的十六进制数是16.B8H,34.97H的十进制数是52.6055,将114.35转换二进制为1110010.01011B。100101.11B+(110101.1)BCD+5A.18H=___________D解答:100101.11B+(110101.1)BCD+5A.18H=163.6438D3.每个汉字的编码有字节组成,ASCII的最高位B7=,而汉字的内码的最高位B7=。计算机根据字节的最高位来区分ASCII码和汉字内码。解答:每个汉字的编码有2个字节组成,ASCII的最高位B7=0,而汉字的内码的最高位B7=1。计算机根据字节的最高位来区分ASCII码和汉字内码。[X]补=0A8H,则X=_______D.解答:X=_-88_D5.已知[X]补=00010111B,则[-4X]补=B解答:[-4X]补=10100100B6.若[X]原=[Y]反=[Z]补=90H,试用十进制数分别写出其大小,X=;Y=;Z=。解答:X=-16;Y=-111;Z=-1127.计算机的主机由、控制器、主存储器组成。解答:计算机的主机由运算器、控制器、主存储器组成。8.__________确定了计算机的5个基本部件:输入器、_________、运算器和__________和控制器,程序和数据存放在__________中,并采用了二进制。解答:冯·诺依曼结构计算机确定了计算机的5个基本部件:输入器、输出器、运算器和存储器和控制器。数据和程序都是存放在存储器中,并采用了二进制。9.将下列十六进制数的ASCII码转换为十进制数。(1)313035H(2)374341H(3)32303030H(4)38413543H解答:(1)313035H=105H=100H+5H=256+5=261(2)374341H=7CAH=800H-36H=2048-(40H-10)=2048-(64-10)=1994(3)32303030H=2000H=8192(4)38413543H=8A5CH=8000H+800H+200H+50H+0CH=32768+2048+512+80+12=3542010.一个8位的二进制补码数,它的十六进制表示为A9H,它的十进制数值为_________。解答:-87D选择题1.用BCD码进行相加,结果为BCD码,为得到正确的结果对高4位和低4为都进行加6修正的是。A.38+49B.33+34C.91+66D.87+15答:D2.补码减法运算是指()。A.操作数用补码表示,符号位单独处理B.操作数用补码表示,连同符号位一起相加C.操作数用补码表示,将减数变为机器负数然后连同符号位相加D.操作数用补码表示,将被减数变为机器负数补,然后相加答:C3.0A7H表示成二进制为___________,如果是无符号数它表示的十进制数为___________;如果为有符号数它表示的十进制数是___________。A.10100111B;167;-167B.10100111B;167;-59C.10100111B;167;-89D.10100111B;89;-89答:C4.10位二进制补码表示的十进制整数范围为:+511—-512,后者补码为:()A.0000000000B.1000000000C.1111111110D.1111111111答:B5.十六进制数88H,可表示成下面几种形式,请找出错误的表示()。A.无符号十进制136B.带符号十进制数-120C.压缩型BCD码十进制数88D.8位二进制-8的补码表示答:D6.设机器字长为8位,最高位为符号位,下述各补码运算可能产生负溢出的是_______。A.48H+64HB.0B4H-63HC.2AH-53HD.37H+0C7H答:B7.在计算机内部,一切信息的存取、处理和传送都是以_______形式进行的。A.EBCDIC码B.ASCII码C.十六进制编码D.二进制编码答:D8.十进制正数38的八位二进制补码是______。A.00011001B.10100110C.10011001D.00100110答:D三.是非判断题1、在第三代计算机期间出现了操作系统。(√)2、对于种类不同的计算机,其机器指令系统都是相同的。(×)3、在计算机中,数据单位bit的意思是字节。(×)4、八进制数的基数为8,因此在八进制数中可以使用的数字符号是0、1、2、3、4、5、6、7、8。(×)5、在汉字国标码GB2312-80的字符集中,共收集了6763个常用汉字。(√)四.问答题1.微处理器、微机和微机系统之间有什么不同?2.设当两个正数相加时,补码溢出意味着什么?两个负数相加能溢出吗?试举例说明。3.在计算机中为什么都采用二进制而不采用十进制数?二进制数由哪两种缩写形式?4.什么是进制的基和权?四种进制之间怎样转换?5.典型的微型计算机中有哪几种总线?它们各自传送什么类型的信息?

第2章微处理器一.填空题1.8086/8088CPU在结构上面由两个独立的处理单元__________和_________构成,这两个单元可以____________工作,从而加快了程序的运行速度。解答:8086/8088CPU在结构上面由两个独立的处理单元____BIU______和___EU____构成,这两个单元可以___并行____工作,从而加快了程序的运行速度。2.8086是Intel系列的16位微处理器,从功能上,它分为两部分即总线接口部件和执行部件。其中,总线接口部件由、、、、等寄存器及20位地址加法器和6字节指令队列构成。执行部件由4个通用寄存器,即;4个专用寄存器,即、、、等寄存器和算术逻辑单元组成。解答:8086是Intel系列的16位微处理器,从功能上,它分为两部分即总线接口部件和执行部件。其中,总线接口部件由代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS、附加段寄存器ES、指令指针寄存器IP等寄存器及20位地址加法器和6字节指令队列构成。执行部件由4个通用寄存器,即AX、BX、CX和DX;4个专用寄存器,即SP、BP、DI、SI等寄存器和算术逻辑单元组成。3.8086中的BIU由个位段寄存器、一个位指令指针、字节指令队列、位地址加法器和控制电路组成。解答:8088/8086中的BIU由4个16位段寄存器、一个16位指令指针、6字节指令队列、20位地址加法器和总线控制电路组成。4.指令队列位于,它存放内存中取出的,8086的指令队列有个字节,而8088的指令队列有个字节。解答:指令队列位于BIU,它存放内存中取出的将被执行的下一条或下几条指令,8086的指令队列有6个字节,而8088的指令队列有4个字节。5.决定计算机指令执行顺序的寄存器是,它总是指向。解答:决定计算机指令执行顺序的寄存器是IP,它总是指向指向下一条指令所在的内存单元的偏移地址。6.用于反映指令执行结果或控制指令执行的寄存器称为寄存器。解答:用于反映指令执行结果或控制指令执行的寄存器称为控制寄存器。7.任何CPU都有一个寄存器存放程序运行状态标志信息,在8086中,该寄存器是。其中,根据运算结果是否为零决定程序分支走向的位分别是。解答:任何CPU都有一个寄存器存放程序运行状态标志信息,在8086中,该寄存器是FR。其中,根据运算结果是否为零决定程序分支走向的位分别是ZF。8.已知[X]补=00010111B,[Y]补=01101101B,则结果[X-Y]补=B,且运算结果使6个状态标志位CF=SF=ZF=AF=PFOF=。解答:[X-Y]补=[X]补-[Y]补=[X]补+[-Y]补[Y]补=01101101B[-Y]真值=-1101101B[-Y]原=11101101B[-Y]反=10010010B[-Y]补=10010011B[X-Y]补=[X]补-[Y]补=[X]补+[-Y]补=00010111B+10010011B运算结果没用进位CF=0运算结果的最高位为1,结果为负数,则SF=1运算结果的各位不全为0,则ZF=0运算结果的低4位没用向高位产生进位,则AF=0运算结果的这8位中1的个数为4个,为偶数个PF=1运算结果的最高位和次高位都无进位,D7C=0,D6C=0因此OF=D7CD6C=0,无溢出。本题的正确答案为:[X]补=00010111B,[Y]补=01101101B,则结果[X-Y]补=10101010B,且运算结果使6个状态标志位CF=0SF=1ZF=0AF=0PF1OF=0。9在8088/8086存储空间中,要求各个逻辑段从节的整数开始,即段首址的低4位必须是。解答:在8088/8086存储空间中,要求各个逻辑段从节的整数开始,即段首址的低4位必须是012.8086/8088CPU的BIU单元中共有4个段寄存器:CS、DS、ES、SS。其中,用来存放当前代码段的基地址,用来存放当前数据段的基地址。解答:8086/8088CPU的BIU单元中共有4个段寄存器:CS、DS、ES、SS。其中,CS用来存放当前代码段的基地址,DS用来存放当前数据段的基地址。13只能隐含使用某个段寄存器,而不能用其它段寄存器代替。操作隐含使用某个段寄存器,使用其它段寄存器。解答:计算程序的堆栈只能隐含使用段寄存器CS,而不能用其它段寄存器代替。有堆栈操作隐含使用某个段寄存器SS,对数据的存取隐含使用DS或ES段寄存器。15.逻辑地址由段基值和组成。将逻辑地址转换为物理地址的公式是。其中的段基值是由存储。解答:逻辑地址由段基值和偏移量组成。将逻辑地址转换为物理地址的公式是物理地址=段基址×10H+偏移量。其中的段基值是由段寄存器存储。16.逻辑地址9B50H:2C00H对应的物理地址是H。解答:物理地址=段基址×10H+偏移量9B50H:2C00H对应的物理地址=9B50H×10H+2C00H=9E100H本题的正确答案为:逻辑地址9B50H:2C00H对应的物理地址是9E100H。17.如果一个30个字的数据区,它的起始地址是2000H:3000H,则这个数据区的首字单元物理地址是,末字单元物理地址是。解答:该数据区的首字单元物理地址是=2000H×10H+3000H=23000H该数据区的空间是30个字,末字单元物理地址的偏移量离首字单元物理地址的偏移量是30个字,那么末字单元物理地址在首字单元物理地址上增加了(30-1=29)个字,就是58个字节,因此末字单元物理地址=首字单元物理地址+58D=23000H+3AH=2303AH。本题的正确答案为:如果一个30个字的数据区,它的起始地址是2000H:3000H,则这个数据区的首字单元物理地址是23000H,末字单元物理地址是2303AH。19.8088CPU内的堆栈是一种特殊的数据存储区,堆栈操作是________操作(字/字节?)其存取采用________________的原则,它由_______________作地址指针管理。解答:8088CPU内的堆栈是一种特殊的数据存储区,堆栈操作是____字____操作(字/字节?)其存取采用___后进先出___的原则,它由____SP_____作地址指针管理。21.若8086系统中SS=1050H,SP=0008H,此时堆栈顶的物理地址为。8086在执行PUSH指令后,操作数存放的的理地址为,指令执行后的堆栈指针寄存器SP的内容。解答::若8086系统中SS=1050H,SP=0008H,此时堆栈顶的物理地址为10508H。8086在执行PUSH指令后,操作数存放的的理地址为10506H,指令执行后的堆栈指针寄存器SP的内容0006H。22.8086微机中寄存器中存放的是当前栈区的的基地址。堆栈区的存取原则为。在8086/8088系统中,栈区最大容量为。若CS=2000H,DS=2500H,SS=3000H,ES=3500H,SP=0100H,AX=2FA6H,则这个栈区的物理地址范围为,CPU执行PUSHAX指令后,栈顶地址为,该栈顶单元存放的内容为。解答:8086微机中SS寄存器中存放的是当前栈区的的基地址。堆栈区的存取原则为先进后出。在8086/8088系统中,栈区最大容量为64KB。若CS=2000H,DS=2500H,SS=3000H,ES=3500H,SP=0100H,AX=2FA6H,则这个栈区的物理地址范围为30000H~30100H,CPU执行PUSHAX指令后,栈顶地址为300FEH,该栈顶单元存放的内容为A6H。23.在8086系统中,已知当前(SS)=2360H,(SP)=0800H,该堆栈段在存储器中的物理地址范围为__________。若往堆栈中存入20个字数据,那么SP的内容为__________,其物理地址为_________。解答:在8086系统中,已知当前(SS)=2360H,(SP)=0800H,该堆栈段在存储器中的物理地址范围为23600H~23E00H。若往堆栈中存入20个字数据,那么SP的内容为07D8H,其物理地址为23DD8H。24.8086系统中一个基本的总线周期由个时钟周期组成,主频若为30MHz,一个时钟周期为,一个基本的总线周期为秒。解答:8086系统中一个基本的总线周期由4个时钟周期组成,主频若为30MHz,一个时钟周期为0.0333s,一个基本的总线周期为0.1333s。25.当存储器的读出时间大于CPU所要求的时间时,为了保证CPU与存储器的周期配合,就要利用信号,使CPU插入一个状态。解答:当存储器的读出时间大于CPU所要求的时间时,为了保证CPU与存储器的周期配合,就要利用READY信号,使CPU插入一个Tw状态。27.8086CPU运用其,AD0两个引用配合,执行读/写操作,若=1,A0=0,其执行相应的操作为若=0,A0=1,其执行相应的操作为。解答::8086CPU运用其,AD0两个引用配合,执行读/写操作,若=1,A0=0,其执行相应的操作为从偶地址单元读/写一个字节。若=0,A0=1,其执行相应的操作为从奇地址单元读/写一个字节。28.8086向内存地址1200BH写一个字节的数据时,需要一个总线周期,在该总线周期的T1状态,为,A0为。解答:8086向内存地址1200BH写一个字节的数据时,需要一个总线周期,在该总线周期的T1状态,为0,A0为1。29.8086CPU的存储器分为奇地址库和偶地址库两个存储体,对于奇地址库选择信号是,对于偶地址库的选择信号是,对于每个存储体内存储单元的选择信号是。解答:8086CPU的存储器分为奇地址库和偶地址库两个存储体,对于奇地址库选择信号是,对于偶地址库的选择信号是A0,对于每个存储体内存储单元的选择信号是READY。30.8086向存储器的奇地址写一个字节的数据时,需要一个总线周期,在该总线周期的第一个时钟周期中,为,A0为,将数据送到。解答:8086向存储器的奇地址写一个字节的数据时,需要一个总线周期,在该总线周期的第一个时钟周期中,为0,A0为1,将数据送到AD15~AD8。31.8086CPU上电复位后,CS=,IP=,DS=,标志寄存器F=。解答:所以本题的正确答案为:8086CPU上电复位后,CS=0FFFFH,IP=0,DS=0,标志寄存器F=0。32.8086/8088CPU复位后,CS的值为H,IP的值为H。解答:8086/8088CPU在复位启动后,指令指针寄存器IP=0、代码段寄存器CS=0FFFFH。33.决定8086/8088CPU工作模式的引脚是。解答:决定8086/8088CPU工作模式的引脚是MN/。选择题1.为了提高程序的执行速度,充分使用总线,8086微处理器被设计为两个独立的功能部件:___C_______。A、运算器和控制器B、运算器和寄存器组C、总线接口部件BIU和执行部件EUD、总线接口部件BIU和控制器2.运算器的主要功能是进行___C_______。A、逻辑运算

B、算术运算C、逻辑运算和算术运算

D、以上均不对3.指令寄存器是___A_______A、IPB、SPC、BPD、PSW4.CPU内的指令指针寄存器IP的作用是:CA、用于存放某特定程序的地址指针。B、用于存放某条指令的地址。C、总是跟踪记忆当前要执行的指令的地址。D、CPU总是根据IP所指明的物理地址中取指令执行,与CS无关。5.8086/8088CPU内部有一个始终指示下条指令偏移地址的部件是(C)A、SPB、CSC、IPD、BP6.在补码运算时,如果运算结果为负,则标志寄存器中为1的标志位是(B)。A、CFB、SFC、PFD、IF7.控制字符串操作指令步进方向的标志是(B)。A、CFB、DFC、ZFD、OF8.微型计算机中各部件之间是用(D)连接起来的.A.ABB.CDC.DBD.系统总线9.8086CPU外部的地址总线和数据总线分别为(B)位。A、16,16;B、20,16;C、16,8;D、20,2010.I/O设备与CPU之间交换信息,其状态信息是通过(C)总线传送给CPU的A.地址B.数据C.控制D.三者均可11.用8088CPU组成的PC机数据线是(C)A.8条单向线B.16条单向线C.8条双向线D.16条双向线12.若总线地址为26位,则最大地址空间为(C)A、6MB、24MC、64MD、128M13.下列哪种表述正确(B)A、有效地址确定内存单元在整个寻址范围内的位置。B、物理地址确定内存单元在整个寻址范围内的位置。C、偏移地址确定内存单元在整个寻址范围内的位置。D、有效地址就是物理地址。14.DS=3000H,SS=3100H,CS==3500H,IP==0100H,SP=0050H,BX=0300H,则当前代码段的物理地址为(D)。A、30300HB、31050HC、35300HD、35100H15.当8086CPU采样到READY=0,则CPU将(B)。A.执行停机指令B.插入等待周期C.执行空操作D.重新发送地址16.8086总线周期是在(C)之后插入Tw。A、T1B、T2C、T3D、T417.因为8086CPU的字数据既可以存放在内存的偶地址,也可以安排在奇地址单元,所以其堆栈指针SP(C)。A、最好是指向偶地址单元;B、可以指向任何地址单元;C、只能指向偶地址单元;D、只能指向奇地址单元。18.8088CPU在进行对外设输出操作时,控制信号/IO和DT/必须是D。A、0,0B、0,1C、1,0D、1,119.8086CPU响应HOLD请求是在(D)A、每一指令周期后B、每一个机器周期后C、可以响应HOLD请求的每一机器周期后D、在总线周期的T4状态或空闲状态TI之后的下一个时钟周期20.当8086/8088CPU响应DMA设备的HOLD请求后,CPU将(D)。A、转入特殊中断服务程序B、进入等待周期C、接受外部数据D、放弃对总线的控制权21.选择题:请将下列左边的项与右边的解释联系起来。(1)CPU()A、保存当前的栈顶地址的寄存器。(2)存储器()B、指示下一条要执行的指令的地址。(3)堆栈()C、存储程序、数据等信息的记忆装置,PC机有ROM和RAM两种。(4)IP()D、以后进先出方式工作的存储空间。(5)SP()E、惟一代表存储空间中每个字节单元的地址。(6)状态标志()F、保存各逻辑段起始地址的寄存器,PC机有四个:CS、DS、SS、ES。(7)控制标志()G、控制操作的标志,PC机有三位:DF、IF、TF。(8)段寄存器()H、记录指令操作结果的标志,PC机有6位:OF、SF、ZF、AF、CF、PF。(9)物理地址()I、分析、控制并执行指令的部件,由ALU和寄存器组组成。解答:本题的正确答案为:(1)CPU()A、保存当前的栈顶地址的寄存器。(2)存储器()B、指示下一条要执行的指令的地址。(3)堆栈()C、存储程序、数据等信息的记忆装置,PC机有ROM和RAM两种。(4)IP()D、以后进先出方式工作的存储空间。(5)SP()E、惟一代表存储空间中每个字节单元的地址。(6)状态标志()F、保存各逻辑段起始地址的寄存器,PC机有四个:CS、DS、SS、ES。(7)控制标志()G、控制操作的标志,PC机有三位:DF、IF、TF。(8)段寄存器()H、记录指令操作结果的标志,PC机有6位:OF、SF、ZF、AF、CF、PF。(9)物理地址()I、分析、控制并执行指令的部件,由ALU和寄存器组组成。三.问答题8086/8088CPU的地址总线有多少位?其寻址范围是多少?答:8086/8088CPU的地址总线共20位,最大可寻址1MB空间。什么是总线?一般微计算机中有哪些总线?答:总线是微机系统之间、系统各模块之间或模块内部以及芯片内部各部分之间用来传送信息的公共信息通路,是计算机传送信息的一组导线,它将各部件连接成一个整体。总线有多种分类方法,按总线在微机中所处位置的不同(或按总线上信息传送范围的不同)来看,微机中包括片内总线、片间总线、系统内总线和系统外总线四级总线。8086/8088CPU分为哪两个部分?各部分主要由什么组成?答:8086/8088CPU分为总线接口部件(BIU)和执行部件(EU)两个部分。其中:BIU包括:4个16位的段地址寄存器(CS、DS、SS、ES);1个16位的指令指针寄存器IP;1个20位的地址加法器;指令队列寄存器;内部寄存器;输入输出总线控制逻辑;EU包括:4个16位的通用数据寄存器(AX、BX、CX、DX);4个16位的专用寄存器(BP、SP、SI、DI);1个16位的标志寄存器FR;什么叫指令队列?8086/8088CPU中指令队列有什么作用?其长度分别是多少字节?答:指令队列是用来暂存指令的一组寄存器,按“先进先出”原则读写。在8086/8088CPU中,只要指令队列未填满,BIU就从外部存储器取指令并放入指令队列中;另一方面,只要指令队列中不空,EU就可将指令队列中已有的指令取出执行,这样BIU和EU按并行方式重叠操作,大大提高了CPU的利用率,也降低了CPU对存储器、I/O端口存取速度的要求。8086CPU中的指令队列缓冲器长度为6个字节,而8088CPU只有4个字节。8086/8088CPU中有几个通用寄存器?有几个变址寄存器?有几个指针寄存器?通常哪几个寄存器亦可作为地址寄存器使用?答:8086/8088CPU中共有:8个16位的通用寄存器AX、BX、CX、DX、BP、SP、SI、DI;2个变址寄存器SI、DI;2个指针寄存器BP、SP;其中BX、BP、SI、DI亦可作地址寄存器。8086/8088CPU中有哪些标志位?它们的含义和作用如何?答:8086/8088CPU中共有9个标志位,其中DF、IF和TF为控制标志位,其余6个为状态标志位。它们的含义和作用如下所示:CF(CarryFlag)进位标志:若算术运算的结果产生了进位或借位(对字节操作最高位是D7位;对字操作最高位是D15位),则CF=1,否则CF=0。PF(Parity/EvenFlag)奇偶标志:如果运算结果中含有偶数个1,则PF=1,否则PF=0。此标志位主要用于数据通信中,检测数据传送有无出错。AF(AuxiliaryCarryFlag)辅助进位标志:用于反映一个字节(字的低字节)的低4位向高4位有无进位(借位)的情况,有进(借)位时,AF=1,否则AF=0。这个标志位主要用于实现BCD码算术运算所需的二-十进制调整之用。ZF(ZeroFlag)零标志:若运算结果为0,此标志为1;否则ZF=0。SF(SignFlag)符号标志:因为补码运算的最高位是符号位,所以它和运算结果的最高位(字节操作是D7位,字操作是D15位)状态相同。当运算结果为负时,SF=1;否则SF=0。OF(OverflowFlag)溢出标志:在带符号数的加或减运算中结果超出8位或16位符号数所能表示的数值范围(-128~127或-32768~+32767)时,产生溢出使OF=1,否则OF=0。DF(DirectionFlag)方向标志位:此标志位用以控制串操作指令地址指针的步进方向。每执行一条串操作指令,对地址要进行一次调整(对字节操作为加1或减1,对字操作为加2或减2)。方向标志DF决定地址是增量还是减量。若DF=1,串地址为减量;DF=0,则为增量。IF(InterruptEnableFlag)中断允许标志位:也称为开中断标志位。若使IF=1,则CPU允许接受外部来的可屏蔽中断源发出的中断请求;若使IF=0,则表示CPU不响应此中所请求。IF对非屏蔽中断及CPU内部中断请求均不起作用。TF(TrapFlag)陷阱标志位:也称为跟踪标志位。若TF=1,则CPU处于单步执行指令的工作方式。在这种工作方式下,CPU每执行完一条指令就自动地产生一次类型为1的内部中断,可以借此检查这条指令的执行情况。例1:1278H+3469H答:CF=0AF=1ZF=0SF=0OF=0PF=1例2:54E3H-27A0H答:CF=0AF=0ZF=0SF=0OF=0PF=0例3:3881H+3597H答:CF=0AF=0ZF=0SF=0OF=0PF=1例4:01E3H-01E3H答:CF=0AF=0ZF=1SF=0 OF=0PF=1什么是堆栈?它有什么用途?堆栈指针的作用是什么?举例说明堆栈的操作。答:堆栈是一个按照后进先出(LIFO)的原则存取数据的存储区域。堆栈的作用是为了在调用子程序(或转向中断服务程序)时,把断点及有关的寄存器、标志位及时正确地保存下来,并保证逐次正确返回。利用堆栈指针SP可以实现对栈区的自动管理。例如:要把AX寄存器中的内容压入堆栈,用入栈指令PUSHAX(设SP原值为1000H),其操作过程如下所示:第一步:先把SP-l→SP,然后把AH(高位字节)送入SP所指单元(即SP=1FFFH);第二步:再次使SP-1→SP,把AL(低位字节)送至SP所指单元(此时SP=1FFEH);数据出栈操作与入栈过程正相反:弹出时,先把AL内容弹出,然后修改SP+1→SP;再把AH内容弹出,再修改SP+1→SP。对于由8086/8088CPU组成的系统,堆栈的位置如何确立?堆栈的首址(即SS中的值)是不是栈底?为什么?答:8086/8088系统中堆栈的位置由SS和SP初始化后确立:其中(SS)*16决定了堆栈段起始单元的地址,即堆栈段首址;(SS)*16+(SP初值)决定了堆栈段最后一个单元的地址,即栈底;(SS)*16+(SP现值)决定了堆栈段当前可用单元的地址,即栈顶。显然,堆栈首址并不是栈低。一般来说,在堆栈所在的内存区内,栈底为高地址端。堆栈初始化后,未压入数据时,栈底与栈顶是重合的。当堆栈压入数据后,栈顶地址总是小于栈底地址,位于低地址端。Intel8086与8088有何区别?答:8086与8088的区别主要表现在以下几个方面:第一、8086的指令队列可以容纳6个字节,每个总线周期在存储器中取出2个字节指令代码填入队列。而8088只能容纳4个字节,且每个总线周期只能取出1个字节指令代码。第二、8086外部数据总线宽度为16位,8088外部数据总线宽度只有8位。注意:8086和8088外部数据总线的宽度不同将导致扩展主存储器及输入/输出接口时系统地址线和数据线连接方式的不同。第三、其他不同的引脚定义:(1)AD15~AD0,在8086中为地址/数据复用,而在8088中AD15~AD8改为A15~A8只作地址线用;(2)34、28号引脚定义不同。试指出下列运算后的各个状态标志,并说明进位标志和溢出标志的区别:其中,进位标志CF用于判别无符号数运算是否超出数的表示范围,而溢出标志OF用于判别带符号数运算是否超出数的表示范围。奇偶标志PF只能判断结果低8位中“1”的个数为奇数还是偶数。什么是逻辑地址?什么是物理地址?它们之间有什么联系?各用在何处?答:逻辑地址由两个16位的部分即段基址和偏移量组成,一般在程序中出现的地址都表示为逻辑地址形式;物理地址是一个20位的地址,它是唯一能代表存储空间每个字节单元的地址,一般只出现在地址总线上。由于8086/8088CPU中的寄存器只有16位长,所以程序不能直接存放20位的物理地址,而必须借助逻辑地址,即用两个16位的寄存器来表示物理地址。他们之间的关系是:物理地址=段基址*16+偏移量;另外,一个物理地址可对应多个逻辑地址。什么是段基值?什么是位移量?它们之间有何联系?答:段基址即段起始地址,它的高16位地址存放在段寄存器中,称之为段基值(低4位一般为0)。存储器单元所在的位置距离段起始地址的偏移量称之为位移量。程序中一个存储单元的实际地址(即物理地址)是由这两部分共同表示的。若CS为0A000H,试说明现行代码段可寻址物理空间的范围。答:因为8086系统中可寻址的最大逻辑段长度为64K,所以当CS为0A000H,即段基址为CS*16=0A0000H时,现行代码段可寻址物理空间的范围为:0A0000H~0AFFFFH。设现行数据段位于存储器0B0000H~0BFFFFH单元,DS段寄存器内容为多少?答:DS段寄存器内容为0B000H。8086/8088CPU使用的存储器为什么要分段?怎么分段?答:在8086/8088CPU中,ALU的运算是16位的,有关的地址寄存器如SP、IP以及BP、SI、DI等都是16位的,因而对地址的运算也只能是16位。也就是说对8086/8088而言,各种寻址方式下寻找操作数的范围被限制在64KB以内。而8086/8088有20条地址线,它的直接寻址能力为1MB。这就产生了一个矛盾,即16位的地址寄存器如何去寻址20位的存储器物理地址。解决这个问题是靠存储器分段实现的:将整个1MB的内存储器以64KB为单位分为若干段。寻址一个具体物理地址时,必须要由一个段地址(基地址)左移4位(即乘16)再加上由SP(或IP、BP、SI、DI)等寄存器之值表示的、可由CPU处理的16位偏移量来形成实际的20位物理地址;其中段地址(或基地址)是由8086/8088中的段寄存器形成的。

第3章汇编语言一.填空题1.指令MOV[BX+SI],AL中的目的操作数使用______段寄存器,属于______寻址方式。解答:指令MOV[BX+SI],AL中的目的操作数使用___DS___段寄存器,属于__基址变址____寻址方式。2.指令MOVBX,NUM[SI]的源操作数使用的是______寻址方式,SUBAX,[BX+SI]使用的是______寻址方式。解答:指令MOVBX,NUM[SI]源操作数使用了变址寄存器和一个位移量,因此是变址寻址方式。指令SUBAX,[BX+SI]中源操作数指定的一个基址寄存器BX和一变址寄存器SI,因此属于基址变址寻址方式。3.指令LEABX,[BP+SI]的源操作数位于,执行后BX的内容是。解答:指令LEABX,[BP+SI]的源操作数位于堆栈段,执行后BX的内容是BP和SI的内容之和。4.堆栈指针SP的初值为2000H,AX=3000H,BX=5000H,CX=1000H,问(1)执行PUSHAX,PUSHBX后,SP=。(2)再执行PUSHCX,POPBX,POPAX后,……③1FFAH00H10H②1FFCH④00H50H①1FFEH⑤00H30H2000H……SP=AX=,BX=AXBX解答:(1)执行AXBXSP-2=1FFEH→SP,指针在位置1处,栈顶为AX的内容执行PUSHBXSP-2=1FFCH→SP,指针在位置2处,栈顶为BX的内容(2)再执行PUSHCX,POPBX,POPAX后,执行PUSHCXSP-2=1FFAH→SP,指针在位置3处,栈顶为CX的内容执行POPBX将栈顶内容1000H弹出到BX中,SP+2=1FFCH→SP,指针在位置4处,BX=1000H执行POPAX将栈顶内容5000H弹出到AX中,SP+2=1FFEH→SP,指针在位置5处,AX=5000H本题的正确答案为:(1)执行PUSHAX,PUSHBX后,SP=1FFCH。(2)再执行PUSHCX,POPBX,POPAX后,SP=1FFEHAX=5000H,BX=1000H5.若(AX)=7531H,(BX)=42DAH,则下列指令段SAHFPUSHBXPOPF指令执行完毕后(AX)=,(SF,ZF,CF,OF)=(,,,)。解答:指令执行完毕后(AX)=7531H,(SF,ZF,CF,OF)=(1,1,0,0)6.已知AL=2EH,BL=6CH,执行指令ADDAL,BL之后,AL=,BL=,ZF=AF=OF=PF=CF=。解答:已知AL=2EH,BL=6CH,执行指令ADDAL,BL之后,AL=9AH,BL=6CH,ZF=0AF=1OF=1PF=1CF=0。7.对两个无符号8位二进制数进行加法运算后,结果为0EH,且标志位CF=1,OF=1,SF=0,其结果应为十进制数。解答:CPU对两个无符号8位二进制数进行加法运算后,结果为0EH,且标志位CF=1,OF=1,SF=0,其结果应为十进制数270。8.设(AL)=10100000B,则执行NEGAL后,(AL)=,设(AL)=10000000B,则执行NEGAL后,(AL)=。解答:基址变址寻址在计算机中的减法运算可以将减数求补,(AL)=10100000B是一个负数,求它的真值,就对其求补(AL)=10100000B=-1100000B=-60H执行NEGAL后,(AL)=01100000B=60H9.已知:(AL)=7AH,题(1),(2)相互独立,求AL的值。(1)SUBAL,20H(AL)=()(2)CMPAL,20H(AL)=()解答:(1)SUBAL,20H这条是减法指令,7AH-20H=5AH,将结果回送到AL中因此(AL)=5AH(2)CMPAL,20H这是比较指令,将目的操作数与源操作数相减,但不送回结果,只根据结果置标志位,即(DST)-(SRC)。指令执行后,两个操作数均不发生变化。因此(AL)=7AH10.设DS=1000H、ES=2000H、SS=3000H、SI=00C0H、DI=0170H、BX=01B0H、AX=5657H,(10370H)=3AH,(10371H)=67H数据段中的变量NUM的偏移地址值为0050H。①求下条指令源操作数的物理地址为ADDAX,NUM[BX][DI]②指令执行完成后OF=,CF=解答:①ADDAX,NUM[BX][DI]的源操作数是相对的基址变址寻址,处于数据段中,有效地址为:EA=0050H+01B0H+0170H=0370HPA=DS×10H+EA=10370H源操作数为10370H单元和10371H单元的内容=673AH②指令执行完成后,AX=673AH+5657H=0BD91H,OF=1(有溢出),CF=0(无进位)11.将DL中的内容循环右移,已知移位前CL=9,要使其移位前后内容保持不变,应选用的指令是。解答:将DL中的内容循环右移,已知移位前CL=9,要使其移位前后内容保持不变,应选用的指令是RCL或RCR。12.串操作指令的两个隐含的指针寄存器是。解答:串操作指令的两个隐含的指针寄存器是SI和DI寄存器。13.指令REPMOVSB重复执行的条件为。解答:指令REPMOVSB重复执行的条件为CX≠0。14.串操作指令在内存中可以实现信息串的搬家,如果DS=ES且SI>DI,不能引起信息串的覆盖,应设置。解答:串操作指令在内存中可以实现信息串的搬家,如果DS=ES且SI>DI,不能引起信息串的覆盖,应设置DF=0。15.将下列程序补充完整:程序的功能是在数据段ADDR1地址处有200个字节,要传送到数据段地址ADDR2处。MOVAX,SEGADDR1MOVDS,AXMOVES,MOVSI,MOVDI,OFFSETADDR2MOV,200CLDREP解答:在存储器中实现信息块的搬家,使用重复前缀,必须先给CX赋值重复的次数。如果信息块的长度是多少个字节,用MOVSB传送时,则将此字节数赋给CX作重复次数;若用MOVSW传送时,则将此字节数÷2赋给CX作重复次数。程序要求200个字节搬移,指令中使用的重复次数为200,由此使用REPMOVSB指令,完整的程序如下:MOVAX,SEGADDR1MOVDS,AXMOVES,AXMOVSI,OFFSETADDR1MOVDI,OFFSETADDR2MOVCX,200CLDREPMOVSB16.若指令JMPADDR1的机器码为E93512H,此指令的CS=1500H,IP=2400H,则目标ADDR1与本指令之间的位移量为,执行本指令时,IP的当前值为,本指令执行后,CPU转移至CS:IP为。解答:JMP指令是无条件转移指令,JMPADDR1的机器码为E93512H,这是三字节指令,E9H表示操作码,8086系统中,高地址存放的是高字节,低地址则是低字节,因此1235H是操作数,表示本指令与ADDR1之间的位移量为1235H。该指令是三字节指令,执行指令时,当前IP=2400H+3=2403H。由目标偏移地址=当前IP值+指令中的位移量=2403H+1235H=3638H。因此,执行该指令后,CPU转移至1500H:3638H处。本题的正确答案为:若指令JMPADDR1的机器码为E93512H,此指令的CS=1500H,IP=2400H,则目标ADDR1与本指令之间的位移量为1235H,执行本指令时,IP的当前值为2403H,本指令执行后,CPU转移至CS:IP为1500H:3638H。17.阅读程序并补充完整:以TAB为首地址的100个ASCII码字符添加奇偶校验位(bit7),使每个字节中的“1”的个数为偶数,再顺序输出到10H号端口。MOVSI,OFFSETTABMOVCX,①L2:MOVAL,[SI]ANDAL,②③L1ORAL,④L1:OUT10H,ALINC⑤LOOPL2解答:传送类指令不影响标志位,可以使用ANDAL,AL或ANDAL,0FFH指令,它对AL的内容无影响,但影响标志位。为使每个字节中的“1”的个数为偶数,,用使用进行JP条件判断,如果PF=1,则转到L2出,否则在最高位加1,可凑成偶数。完整的程序如下:MOVSI,OFFSETTABMOVCX,100L2:MOVAL,[SI]ANDAL,0FFH或ALJPL1ORAL,80HL1:OUT10,HALINCSILOOPL218.设AX=8000H,BX=0FFFFH,执行CMPAX,BX后,写出两条能引起转移的条件转移指令①、②。解答:AX=8000H,BX=0FFFFH,执行CMPAX,BX后CF=1(有借位),OF=0(没有溢出),ZF=0(结果不为0),SF=1(结果为负数,最高位为1),PF=0(第8位有1个1)。因此能引起只要的条件指令有JC、JNO、JNZ等。本题的正确答案为:设AX=8000H,BX=0FFFFH,执行CMPAX,BX后,写出两条能引起转移的条件转移指令JC、JNZ。19.汇编语言的调试过程如下:建立______以为扩展名的源文件;生成以______为扩展名的目标文件;生成以______为扩展名的可执行文件;使用DYBUG调试程序,调试可执行目标程序。解答:汇编语言的调试过程如下:建立.ASM以为扩展名的源文件;生成以.OBJ为扩展名的目标文件;生成以.EXE为扩展名的可执行文件;使用DYBUG调试程序,调试可执行目标程序。20.宏汇编语言程序被汇编时,_____语句产生代码指令,______语句不产生代码指令,______语句可能产生也可能不产生代码指令。解答:宏汇编语言程序被汇编时,指令性语句产生代码指令,伪指令语句不产生代码指令,宏指令语句可能产生也可能不产生代码指令。21.已知VAR1是字变量,指令MOVAX,VAR1的功能是将送到AX中;指令MOVAX,OFFSETVAR1的是将送到AX,其功能和指令AX,VAR1是相同的。解答:已知VAR1是字变量,指令MOVAX,VAR1的功能是将VAR1的内容送到AX中;指令MOVAX,OFFSETVAR1的是将VAR1的偏移量送到AX,其功能和指令LEAAX,VAR1是相同的。22.假设VDT1和VDT2为字变量,TAL1和TAL2为标号,说明下列指令是否正确,说明其寻址方式;若有错误指出错误所在。(1)JMPVDT1(2)JMPNEARTAL1(3)JNZVDT2(4)JETAL2(5)JMPFARPTRTAL1(6)JMPFAL1[SI]解答:(1)JMPVDT1非法指令,跳转指令应为标号不能是变量,VDT1是变量(2)JMPNEARTAL1非法指令,标号的类型属性指在转移指令中标号可转移的距离,也称距离属性。类型NEAR,表示此标号只能实现本代码段内转移或调用;类型FAR,表示可以作为其它代码段中的目标地址,实现段间转移或调用。使用时,在属性后加PTR,应该改为:JMPNEARPTRTAL1(3)JNZVDT2非法指令,跳转指令应为标号不能是变量,VDT2是变量(4)JETAL2合法指令。(5)JMPFARPTRTAL1合法指令(6)JMPFAL1[SI]非法指令,FAL1为标号,表示指令语言的符号地址,SI是源变址寄存器,它存放的是地址。这条指令的错误之处在于两个地址表达式不能相加。二.选择题1.寻址方式指出了操作数的位置,一般来说(D)。A、立即寻址给出了操作数地址;B、寄存器直接寻址的操作数在寄存器内,而指令给出了存储器;C、直接寻址直接给出了操作数本身;D、寄存器直接寻址的操作数包含在寄存器内中,由指令指定寄存器的名称。2.寄存器寻址方式中,操作数在(A)中。A、通用寄存器B、堆栈C、内存单元D、段寄存器3.寄存器间接寻址方式中,操作数在(C)中。A、通用寄存器B、代码段C、内存单元D、段寄存器4.8088变址寻址方式中,操作数的物理地址等于(B)A、段寄存器左移四位加上变址寄存器的内容;B、段寄存器左移四位加上变址寄存器的内容再加给定的偏移量;C、段寄存器左移四位加上变址寄存器的内容再加基址寄存器内容;D、段寄存器左移四位加上基址寄存器的内容再加给定的偏移量;5.下列指令中非法指令是(B)A.MOV[SI+BX],AXB.MOVCL,280C.MOV[0260H],2346HD.MOVBX,[BX]6.下列指令中,正确的是(D)A、MOVAL,1000B、MOV100,ALC、MOVAL,100HD、MOVAL,1007.在指令ADDAX,00H执行后,CPU状态标志位ZF的取值为(C)a.为0b.为1c.不确定d.没有影响8..8086CPU在进行无符号数比较时,是根据(C)标志来判别大小的。A.CF和OFB.CF和SF C.CF和ZFD.OF和ZF9.设AL=0B4H,BL=11H,指令“MULBL”和指令“IMULBL”分别执行后OF,CF的值为(B)。A、OF=1,CF=0B、OF=1,CF=1C、OF=0,CF=0D、OF=0,CF=110.下面指令中影响状态标志位CF的指令是(D)。A、INCAX;B、DECAX;C、NOTAX;D、NEGAX11.已知AL=A8H,BL=62H,执行ANDAL,BL指令后,AL中的数为(B)A.32B.20HC.00HD.+2012.AX中有一负数,欲求其绝对值,若该数为补码,则用指令;若该数为原码,则用指令。解答:AX中有一负数,欲求其绝对值,若该数为补码,则用指令NEGAX;若该数为原码,则用指令ANDAX,7FFFH。13.以下可以使寄存器AX和CF同时清零的指令为(A)A.SUBAX,AXB.XCHGAX,BXC.PUSHAXD.XORAX,BX14.完成将累加器AL清零,并将进位标志CF清零,下面错误的指令是(A)。A、MOVAL,00HB、ANDAL,00HC、XORAL,ALD、SUBAL,AL15.假设AL=3,要使得AL=0CH,应执行的指令是(C)A、NOTALB、ANDAL,0FHC、XORAL,0FHD、ORAL,0FH16.测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是(B)。A、TESTBL,4FHJZNEXTB、XORBL,4FHJZNEXTC、ANDBL,4FHJZNEXTD、ORBL,4FHJZNEXT17.下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,横线处的指令应为()。TESTBH,01HK1A、JNEB、JZC、JNPD、JC解答:TESTBH,01H指令执行结束后,如果BH为奇数,其“与”后的结果都为最低位为1,则ZF=0,那么ZF=0则转移到K1处,使用的指令应该为JNZ/JNE。正确答案为A。18.执行INTn指令或响应中断时,CPU完成的操作次序是(A)A、FLAGS寄存器(FR)先入栈,其次CS,最后IPB、CS在先,其次IP,最后FR入栈C、FR在先,其后依次是IP,CSD、IP在先,其次CS,最后FR19.用汇编语言编写的源程序,其后缀名为();其可执行程序的后缀名为()。A、exeB、objC、asmD、c解答:用汇编语言编写的源程序,其后缀名为(.asm);其可执行程序的后缀名为(.exe),选择C、A。20.下列描述正确的是B。A.汇编语言源程序可发直接运行B.汇编语言属低级语言C.汇编语言是汇编语言编写的程序,运行速度高,阅读方便,属于面向用户的程序语言D.汇编语言可以在可以移植。21.列伪指令哪些是正确的:CERR1:DW99ERR2DB25×60COUNTEQU20ONEDBONE三.判断题1.是非判定题:立即数寻址方式的操作数是在代码段中的,因此在执行指令的过程中也要执行总线周期。(f)2.8086指令系统寻址方式中,直接寻址直接给出了操作数本身。(f)3.立即寻址方式的操作数一定放在代码段中,而直接寻址方式的操作数一定放在数据段中。(f)4.判断下列指令是否正确?(1)ADDAL,BL(2)ADDDS,CX(3)ADD〔SI〕,〔BP+100H〕(4)ADD〔BX〕,AX(5)ADDAX,CL解答:(1)ADDAL,BL;合法指令,源操作数和目的操作数都是8位寄存器(2)ADDDS,CX;非法指令,目的操作数不能是段寄存器(3)ADD〔SI〕,〔BP+100H〕;非法指令,源操作数和目的操作数都是存储区操作数(4)ADD〔BX〕,AX;合法指令,源操作数是寄存器,目的操作数是存储器操作数(5)ADDAX,CL;非法指令,源操作数和目的操作数类型不匹配5.CPU用指令SUBAX,AX可以是零标志位置位,进位标志清零。(t)6.x与Y进行异或运算后再与Y的反进行异或运算,结果是求x的反。(t)四.编程题1.对数据段中4300H单元内的8位带符号数判断,若为正数,加1放回原单元;为负数,则减1放回原单元,编写程序。解答:MOVAL,[4300H]ADDAL,0JNSPOSIINCALMOV[4300H],ALJMPEXITPOSI:DECALMOV[4300H],ALEXIT:HLT2.编写程序:给1A000H开始的256个内存单元均减去1,若发现某个单元减为0则立即退出循环,其后的单元不再减1。解答:1A000H是物理地址,我们可以设DS=1A00H,偏移地址则为0。程序如下:MOVAX,1A00HMOVDS,AX;给段寄存器DS赋值1A00HMOVDI,0;DI指向内存数据区MOVCX,256;共循环256次GOON:DECBYTEPTR[DI];由DI指向的内存单元的内容减1INCDI;指针加1,指向下一个单元CMPBYTEPTR[DI-1],0;上一个单元的内容和0进行比较LOOPNZGOON;不为0,则继续转向GOON处,同时CX内容自动减1HLT;为0,退出循环3.编程实现将存储单元BLOCK中的N个字节的数据按正数、负数分开,分别送到两个缓冲区PLUS_DATA和MINUS_DATA。解答:设置三个指针,SI指向BLOCK存储单元,DI指向PLUS_DATA存储区,BX指向MINUS_DATA存储区。在程序中使用串操作指令,设置传送方向从低到高即CLD。先从BLOCK中取一个字节,用测试指令TESTAL,80H指令测试其最高位,再用JZ判断正负,正数转到PLUS_DATA数据区,负数转到MINUS_DATA数据区。程序如下:LEASI,BLOCK;S指向内存数据区LEADI,PLUS_DATA;DI指向存放正数的缓冲区LEABX,MINUS_DATA;BX指向存放负数的缓冲区CLD;由低到高MOVCX,N;置循环次数AGAIN:LODSB;从DS:SI(内存数据区)取一个字节到AL中TESTAL,80H;测试AL中的最高位JNZMIUS;若ZF=0,表示最高位为1是负数,转移到MIUS处理STOSB;为正数,将AL中的内容存到ES:DI处,修改指针DIJMPNEXT_N;转下一个MIUS:XCHGBX,DI;BX与DI交换,是DI指向存负数的缓冲区STOSB;存负数,同时修改指针DIXCHGBX,DI;将修改后的指针与BX交换NEXT_N:LOOPAGAIN;未完成,继续4.在8000H开始的长度为1000字节的字符串中查找‘S’,若找到,把其偏移地址记录在ADDR中,否则ADDR单元置为0FFFFH。分析:考查8086的指令系统解答:在8000H开始的长度为1000字节的字符串中查找‘S’,可以使用信息串的扫描指令SCASB,将字符‘S’放在AL中,将DI设置为8000H。MOVDI,8000HMOVCX,1000MOVAL,‘S’MOVADDR,0FFFFHGOON:SCASBLOOPNZGOONJNZDONEDECDIMOVADDR,DIDONE:HLT也可使用带条件重复前缀REP指令,前四条指令相同,后续指令如下:CLDREPNESCASB;CX≠0(没查完)和ZF=0(不相等)重复JNZDONE;若ZF=0,表示没有找到,转出DECDI;若ZF=1,则DI指向上个单元即字符‘S’的偏移地址MOVADDR,DI;将偏移地址送到ADDR单元中DONE:HLT5.编程将BUF单元中的一个8位数乘以10,乘积放在ANS单元及其下的一个单元中(至少用3种方法)。解答:(1)利用乘法指令,这是最直接的方法MOVAL,BUFMOVBL,10MULBLMOVANS,AXHLT(2)一个数乘以10就是对该数连续加10次,因此可以利用连续加法实现。MOVAL,BUFMOVCX,10MOVAH,0MOVDX,0GOON:ADDDX,AXDECCXJNZGOONMOVANS,DXHLT(3)用左移指令来实现,因为左移1次就是是乘以2,左移3次是乘以8,那么2+2=10,所以可用移位实现乘10操作。MOVAL,BUFMOVCL,3SALAL,1;左移1位就是乘以2MOVAH,AL;将乘以2的结果存放在AH中SALAL,1;再左移1位是乘以4SALAL,1;ADDAL,AH,;HLT6.将内存中DATA单元起始的100个单元中的字节数据排序。解答:100个单元中的字节数据由大到小排序,有多种方法,常用的方法为“冒泡法”排序。首先,所有相邻两单元的数依次两两比较,若下面的数大则不交换;若下面的数打,则两数交换位置。可以看出,第一轮共进行100-1=99次比较,最小的数排到了最后面。第二轮在前99个数中比较交换,共进行100-2=98次比较,次小的数排到了倒数第二位。如此进行,经过100-1=99轮比较,已经排好了次序。程序如下:MOVBX,OFFSETDATAMOVCX,100DECCXLOOP1:MOVDI,CXLOOP2:MOVAX,[BX]CMPAX,[BX+1]JGENEXTXCHGAX,[BX+2]MOV[BX],AXNEXT:INCBXLOOPLOOP2MOVCX,DILOOPLOOP1INT7.若在内存某一缓冲区中存放着若干个单元的用BCD码表示的十进制数。每—个单元中放两位BCD码,要求把它们分别转换为ASCII码。高位的BCD码转换完后放在地址较高的单元。解答:转换公式:ASCII=BCD+30H,其算法是将源串和目的串的表首分别设两个指针。取BCD转ASCII后存入(先低位,后高位)MOV SI,OFFSETBCDBUFF;设置源地址指针MOV CX,COUNT;设计数初值MOV DI,OFFSETASCBUF;设置目的地址指针AGAIN:MOV AL,[SI]MOV BL,ALAND AL,0FH;取低位BCD码OR AL,30H;转换成ASCII码MOV [DI],AL;存入INC DI;修改指针MOV AL,BLPUSH CXMOV CL,4SHR AL,CLOR AL,30H;高位转换成ASCII码MOV [DI],AL;存入POP CXINC DIINC SI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论