微机原理课后作业答案.txt

第一章作业1.1微处理器、微型计算机和微型计算机系统三者之间有什么不同?解:把CPU(运算器和控制器)用大规模集成电路技术做在一个芯片上,即为微处理器。微处理器加上一定数量的存储器和外部设备(或外部设备的接口)构成了微型计算机。微型计算机与管理、维护计算机硬件以及支持应用的软件相结合就形成了微型计算机系统。1.2 CPU在内部结构上由哪几部分组成?CPU应该具备哪些主要功能?解:CPU主要由起运算器作用的算术逻辑单元、起控制器作用的指令寄存器、指令译码器、可编程逻辑阵列和标志寄存器等一些寄存器组成。其主要功能是进行算术和逻辑运算以及控制计算机按照程序的规定自动运行。1.3 微型计算机采用总线结构有什么优点?解:采用总线结构,扩大了数据传送的灵活性、减少了连线。而且总线可以标准化,易于兼容和工业化生产。1.4 数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用一套总线或者合用部分总线,那么要靠什么来区分地址和数据?解:数据总线是双向的(数据既可以读也可以写),而地址总线是单向的。8086CPU为了减少芯片的引脚数量,采用数据与地址线复用,既作数据总线也作为地址总线。它们主要靠信号的时序来区分。通常在读写数据时,总是先输出地址(指定要读或写数据的单元),过一段时间再读或写数据。1.8在给定的模型中,写出用累加器的办法实现15×15的程序。解:LD A, 0LD H, 15LOOP:ADD A, 15DEC HJP NZ, LOOPHALT第2 章作业答案2.1 IA-32结构微处理器直至Pentillm4,有哪几种?解:80386、30486、Pentium、Pentium Pro、Peruium II 、PentiumIII、Pentium4。2.6 IA-32结构微处理器有哪几种操作模式?解:IA一32结构支持3种操作模式:保护模式、实地址模式和系统管理模式。操作模式确定哪些指令和结构特性是可以访问的。2.8 IA-32结构微处理器的地址空间如何形成?解:由段寄存器确定的段基地址与各种寻址方式确定的有效地址相加形成了线性地址。若末启用分页机制,线性地址即为物理地址;若启用分页机制,则它把线性地址转为物理地址。2.15 8086微处理器的总线接口部件由哪几部分组成?解:8086微处理器中的总线接口单元(BIU)负责CPU与存储器之间的信息传送。具体地说,BIU既负责从内存的指定部分取出指令,送至指令队列中排队(8086的指令队列有6个字节,而8088的指令队列只有4个字节);也负责传送执行指令时所需的操作数。执行单元(EU)负责执行指令规定的操作。2.16 段寄存器CS=120OH,指令指针寄存器IP=FFOOH,此时,指令的物理地址为多少?解:指令的物理地址=12000H+FFOOH=21FOOH3.1分别指出下列指令中的源操作数和目的操作数的寻址方式。(1)MOV SI, 30O(2)MOV CX, DATA[DI](3)ADD AX, [BX][SI](4)AND AX, CX(5)MOV [BP], AX(6)PUSHF解:(l)源操作数为立即寻址,目的操作数为寄存器寻址。(2)源操作数为变址寄存器加位移量寻址,目的操作数为寄存器寻址。(3)源操作数为基址加变址寻址,目的操作数为寄存器寻址。(4)源操作数和目的操作数都为寄存器寻址。(5)源操作数为寄存器寻址,目的操作数为寄存器间接寻址。(6)为堆栈操作。3.2 试述指令MOV AX,2000H和MOV AX,DSz[2000H]的区别。解:前一条指令是立即寻址,即把立即数2000H传送至寄存器AX。后一条指令是直接寻址,是把数据(DS)段中的地址为200OH单元的内容传送至寄存器AX。3.3 写出以下指令中内存操作数的所在地址。(1)MOV AL, [BX+10](2)MOV [BP+10], AX(3)INC BYTE PTR[SI十5](4)MOV DL, ES:[BX+SI](5)MOV BX , [BP+DI+2]解:(1)数据段BX+10单元。(2)堆栈段BP+10单元。(3)数据段SI+5字节单元。(4)附加段(ES段)BX+SI单元。(5)堆栈段BP+DI+2单元。3.4 判断下列指令书写是否正确。(1)MOV AL, BX(2)MOV AL, CL(3)INC [BX](4)MOV 5, AL(5)MOV [BX], [SI](6)M0V BL, OF5H(7)MOV DX, 2000H(8)POP CS(9)PUSH CS解:(l)不正确,AL与BX数据宽度不同。(2)正确。(3)不正确,因为不明确是增量字节还是字。(4)不正确,立即数不能作为目的操作数。(5)不正确,因为不明确要传送的是字节还是字。(6)正确。(7)正确。(8)不正确,CS不能作为:pop指令的操作数。(9)不正确,CS不能作为PUSH指令的操作数。3.5 设堆钱指针SP的初值为1000H,AX=2000H, BX=3000H,试问:(1)执行指令PUSH AX后SP的值是多少?(2)再执行PUSH BX及POP AX后,SP、AX和BX的值各是多少?解:(1) SP=OFFEH。(2) SP=OFFEH; AX=3000H, BX=3000H。3.6要想完成把[3000H]送[2000H]中,用指令:MOM [200OH], [300OH]是否正确?如果不正确,应该用什么方法实现?解: 不正确。正确的方法是:MOV AL, [300OH]MOV [2000H], AL3.7 假如想从200中减去AL中的内容,用SUB 200,AL是否正确?如果不正确,应该用什么方法?解:不正确。正确的方法是:MOV BL, 200SUB BL, AL3.8 试用两种方法写出从8OH端口读入信息的指令。再用两种方法写出从4OH口输出10OH的指令。解:(1)IN AL, 80H(2)MOV DX, 8OHIN AL, DX(3)MOV, AL, lOOHOUT 40H, AL4)MOV AL, 10OHMOV DX,4OHOUT DX, AL3.9假如:AL=20H,BL=1OH,当执行CMP AL,BL后,问:(1)AL、BL中的内容是两个无符号数,比较结果如何?影响哪儿个标志位?(2)AL、BL中的内容是两个有符号数,结果又如何,影响哪几个标志位?解:(l)AL=2OH,BL=1OH,O=0,S=0,Z=0,A=0,P=0,C=0。(2)因为两个都是符号正数,其结果与(l)相同。3.10 若要使AL×10,有哪几种方法,试编写出各自的程序段?解:(1)使用乘法指令:MOV BL,10MUL BI,(2)使用移位指令:SHL AL,1MOV BL,ALSHL AL, 2ADD AL,BL(3)使用加法指令:ADD AL,ALMOV BL, ALADD AL, ALADD AL, ALADD AL, BL3.11 8086汇编语言指令的寻址方式有哪几类?哪种寻址方式的指令执行速度最快?解:寻址方式分为:立即数寻址方式、寄存器操作数寻址方式和存储器操作数寻址方式。其中,寄存器操作数寻址方式的指令执行速度最快。3.12 在直接寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?如果要用某个段寄存器指出段地址,指令中应该如何表示?解:默认的数据访问,操作数在DS段;堆栈操作在SS段;串操作源操作数(SI)在DS段,目的操作数(DI)在ES段;用BP作为指针在SS段。如果要显式地指定段地址,则在操作数中规定段寄存器。例如:MOV AX, ES:(BX+10H)3.13 在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,那么如何确定段地址?解:在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,段地址是隐含约定的,也就是隐含地选择段寄存器。如操作类型为指令,则指定代码段寄存器CS,如操作类型为堆栈操作,则指定堆找段寄存器SS,…,如表3-1中所示。当需要超越约定时,通常用段替代前缀加冒号指针。MOV指令不能实现内存单元间的数据传送。XCHG指令是交换,有一个操作数必须是寄存器。3.17下面这些指令中哪些是正确的?哪些是错误的?若是错误的,请说明原因。(1)XCHG CS, AX(2)MOV [BX], [1000](3)XCHG BX, IP(4)PUSH CS(5)POP CS(6)IN BX, DX(7)MOV BYTE[BX], 100O(8)MOV CS, [1000]解:(l)错误,CS不能交换。(2)错误,MOV指令不能在内存间传送。(3)错误,IP不能交换。(4)错误,CS可以作为PUSH指令的操作数。(5)错误,CS可以作为POP指令的操作数。(6)错误,IN指令的目的操作数是累加器。(7)错误,目的操作数是字节单元。(8〉错误,CS不能作为MOV指令的目的操作数。3.18 以下是格雷码的编码表,O 00001 00012 00113 00104 01105 01116 01017 01008 1100请用换码指令和其他指令设计一个程序段,以实现由格雷码向ASCII码的转换。解:MOV BX,TABLEMOV SI,ASCII_TABMOV AL,0MOV CX,10TRAN: XLAT TABLEMOV DL,ALADD DL,30HMOV [SI],DLINC ALLOOP TRAN3.19 使用乘法指令时,特别要注意先判断是用有符号数乘法指令还是用无符号数乘法指令,这是为什么?解:因为有符号数和无符号数,其数的乘法是一样的。但结果的符号取决于两个操作数的符号。3.20 字节扩展指令和字扩展指令一般用在什么场合?举例说明。解:主要用于字节相除和字相除之前,把被除数扩展为两倍宽度的操作数。3.21 什么叫BCD码?什么叫组合的BCD码?什么叫非组合的BCD码?8086汇编语言在对BCD码进行加、减、乘、除运算时,采用什么方法?解:BCD码为十进制编码的二进制数。组合的BCD数是把两位BCD加在一个字节中,高位的在高4位。非组合的BCD码是把一位BCD数放在一个字节的低4位,高4位为0。8086在BCD加、减和乘法运算以后用BCD调整指令把结果调整为正确的BCD数。在BCD除法之前先用BCD调整指令再做除法.3.22 用普通运算指令执行BCD码运算时,为什么要进行十进制调整?具体地讲,在进行BCD码的加、减、乘、除运算时,程序段的什么位置必须加上十进制调整指令?解:因为8086指令把操作数作为二进制数进行二进制运算,要得到正确的BCD结果,需要进行调整。在加、减、乘法指令之后加上BCD调整指令,而在除法指令之前先用BCD调整指令再用除法指令。第4章作业答案4.1 在下列程序运行后,给相应的寄存器及存储单元填入运行的结果:MOV AL, 1OHMOV CX, 100OHMOV BX , 2000HMOV [CX],ALXCHG CX, BXMOV DH, [BX]MOV DL, 01HXCHG CX, BXMOV [BX],DLHLT解:寄存器及存储单元的内容如下:AL = 1OHBL = OOHBH = 2OHCL = OOHCH = 1OHDH = 1OH(10O0H) = lOH(200OH) = 0lH2.要求同题4.1,程序如下:MOV AL, 50HMOV BP, 100OHMOV BX, 200OHMOV [BP], ALMOV DH, 20HMOV [BX], DHMOV DL, OlHMOV DL, [BX]MOV CX, 300OHHLT解:寄存器及存储单元的内容如下:AL = 5OHBL = OOHBH = 20HCL = OOHCH = 30HDL = 20HDH = 2OHBP = 100OH(10OOH) = 5OH(20OOH) = 20H4.3 自1000H单元开始有一个100个数的数据块,若要把它传送到自200OH开始的存储区中去,可以采用以下3种方法实现,试分别编制程序以实现数据块的传送。(l)不用数据块传送指令(2)用单个传送的数据块传送指令(3)用数据块成组传送指令。解:(1) LEA SI, 1OOOHLEA DI, 200OHMOV CX, 100L1: MOV AX, [SI]MOV [DI], AXLOOP LlHLT(2) LEA SI, 100OHLEA DI, 2000HMOV CX, 100CLDL1: MOVSBLOOP L1HLT(3) LEA SI, 100OHLEA DI, 200OHMOV CX, 100CLDREP MOVSBHLT4.4 利用变址寄存器,编写一个程序,把自1000H单元开始的100个数传送到自1070H开始的存储区中去。解:LEA SI, 100OHLEA DI, 1070HMOV CX, 100CLDREP MOVSBHLT4.5 要求同题4.4,源地址为2050H,目的地址为2000H,数据块长度为50.解:LEA SI, 205OHLEA DI, 200OHMOV CX, 50CLDREP MOVSBHLT4.6 编写一个程序,把自100OH单元开始的100个数传送'至105OH开始的存储区中(注意:数据区有重叠)。解:LEA SI, 100OHLEA DI , 1050HADD SI, 63HADD DI, 63HMOV CX, 100STDREP MOVSBHLT4.7 在自0500H单元开始,存有100个数。要求把它传送到1000H开始的存储区中,但在传送过程中要检查数的值,遇到第一个零就停止传送。解:LEA SI, 050OHLEA DI, 10OOHMOV CX, 100N1: MOV AL, [SI]CMP AL, 0JZ N2MOV [DI], ALINC SIINC DILOOP N1N2: HLT4.14若在0500H单元中有一个数(1)利用加法指令把它乘2,且送回原存储单元(假定X×2后仍为一个字节);(2)X×4;(3)X×10(假定X×l0≤255).解:(1) LEA BX, 050OHMOV AL, [BX]ADD AL, ALMOV [BX], AL(2) LEA BX, 0500HMOV AL, [BX]ADD AL, ALADD AL, ALMOV [BX], AL(3) LEA BX, 050OHMOV AL, [BX]ADD AL, ALMOV DL, ALADD AL, ALADD AL, ALADD AL, DLMOV [BX], AL5.1 总线周期的含义是什么?8086/8088CPU的基本总线周期由几个时钟组成?如果一个CPU的时钟频率为8MHz,那么,它的一个时钟周期是多少?一个基本总线周期是多少?如果主频为5MHz呢?解: CPLI访问总线(从内存储器或I/0端口读/写字节或字)所需的时间称为总线周期。8086/8088CPU的基本总线周期由4个时钟组成。若CPU的时钟频率为8(5)MHz,时钟周期为1/8MHz=125(1/5MHz=2O)ns,基本总线周期为4×125(200)ns=500(800)ns5.2 在总线周期的TI、T2、T3、T4状态,CPU分别执行什么动作?什么情况下需要插入等待状态Tw? Tw在哪儿插入? 怎样插入?解: 下面以存储器读为例进行说明。在Tl周期:输出地址信号、地址锁存允许信号、内存或I/O端口访问控制信号;在T2周期:CPIJ开始执行数据传送操作,此时,8086CPU内部的多路开关进行切换,将地址/数据线AD15~AD0上的地址撤销,切换为数据总线,为读写数据作准备。8288总线控制器发出数据总线允许信号和数据发送/接收控制信号DT/R允许数据收发器工作,使数据总线与8086CPU的数据线接通,并控制数据传送的方向。同样,把地址/状态线A19/S6~A16/S3切换成与总线周期有关的状态信息,指示若干与周期有关的情况。在T3周期:开始的时钟下降沿上,8086CPU采样READY线。如果READY信号有效(高电平),则在T3状态结束后进人TA状态。在T4状态开始的时钟下降沿,把数据总线上的数据读入CPU或写到地址选中的单元。在T4状态:结束总线周期。如果访问的是慢速存储器或是外设接口,则应该在Tl状态输出的地址,经过译码选中某个单元或设备后,立即驱动READY信号到低电平。8086CPU在T3状态采样到READY信号无效,就会插入等待周期Tw,在Tw状态CPU继续采样READY信号;直至其变为有效后再进人T4状态,完成数据传送,结束总线周期。在T4状态,8086CPU完成数据传送,状态信号2 0 。S ~ S6.1 若有一单板机,具有用8片2114构成的4KBRAM,连线如图创所示。若以每1KB RAM作为一组,则此4组RAM的基本地址是什么?地址有没有重叠区?每一组的地址范围为多少?解:RAM的基本地址为:第一组OOOOH ~ 03FFH第二组4000H ~ 43FFH第三组8000H ~ 83FFH第四组COOOH ~ C3FFH地址有重叠区。每一组的地址范围为OOOH ~ 3FFH(1024个字节)6.4 若要扩充1KB RAM(用2114片子),规定地址为8000H~83FFH,地址线应该如何连接?解: 扩充lKB RAM至规定地址8000H ~ 83FFH,其地址线的低10位接芯片,高6位地址(Al5 ~A10 = 100000)产生组选择信号。第7 章作业答案7.1 外部设备为什么要通过接口电路和主机系统相连?解: 因为外部设备种类繁多,输入信息可能是数字量、模拟量或开关量,而且输入速度、电平、功率与CPU差距很大。所以,通常要通过接口电路与主机系统相连。7.4 CPU和输入输出设备之间传送的信息有哪几类?解:CPU和输入输出设备之间传送的信息主要有3类。(l)数据在微型计算机中,数据通常为8位、16位或32位。(2)状态信息在输入时,有输入设备的信息是否准备好;在输出时有输出设备是否有空,若输出设备正在输出信息,则以忙指示等。(3)控制信息例如,控制输入输出设备启动或停止等。7.9 设一个接口的输入端口地址为0100H,状态端口地址为0104H,状态端口中第5位为1表示输入缓冲区中有一个字节准备好,可以输入。设计具体程序以实现查询式输入。解: 查询输入的程序段为:POLl : IN AL, 0104HAND AL, 20HJZ POLlIN AL, 0100H第8 章作业答案8.1 在中断响应过程中,8086CPU向8259A发出的两个RT互信号分别起什么作用?解: CPU发出的第一个INTA脉冲告诉外部电路,其提出的中断请求已被响应,应准备将类型号发给CPU,8259A接到了这个INTA脉冲时,把中断的最高优先级请求置入中断状态寄存器(ISR)中,同时把IRR(中断请求寄存器)中的相应位复位。CPU发出的第二个INTA脉冲告诉外部电路将中断的类型号放在数据总线上。8.2 8086CPU最多可以有多少个中断类型?按照产生中断的方法分为哪两大类?解:8086CPU最多可以有256个中断类型。按照产生中断的方法,可以分为内部中断(软件中断)和外部(硬件中断)中断两大类。8.9 在编写中断处理子程序时,为什么要在子程序中保护许多寄存器?解: 因为在用户程序运行时,会在寄存器中有中间结果,当在中断服务程序中要使用这些寄存器前要把这些寄存器的内容推至堆栈保存(称为保护现场)。在从中断服务程序返回至用户程序时把这些内容从堆找恢复至寄存器中(称为恢复现场)。8.12 若在一个系统中有5个中断源,其优先权排列为:1、2、3、4、5,它们的中断服务程序的入口地址分别为:3000H、302OH、3050H、3080H、30AOH。编写一个程序,当有中断请求CPU响应时,能用查询方式转至申请中断的优先权最高的源的中断服务程序。解: 若5个中断源的中断请求放在一中断状态寄存器中,按优先权分别放在状态的7位(优先权最高)至位3中。查询方法的程序段为:IN AL, STATUSCMP AL, 80HJNE N1JMP 3000HN1: IN AL, STATUSCMP AL, 40HJNE N2JMP 3020HN2: IN AL, STATUSCMP AL, 20HJNE N3JMP 3050HN3: IN AL, STATUSCMP AL, 10HJNE N4JMP 3080HN4: IN AL, STATUSCMP AL, 08HJNE N5JMP 30A0HN5: RET第9章作业答案9.3 在某一应用系统中,计数器/定时器8253地址为340H~343H,定时用作分频器(N为分频系数),定时器2用作外部事件计数器,如何编制初始化程序?解:定时器0用作分频器,工作方式2,其初始化程序为:MOV AL, 34HOUT 343H, ALMOV AL, N1OUT 342H, ALMOV AL, N2OUT 342H, AL定时器2用作外部事件计数器,工作在方式0,其初始程序:MOV AL, 0B0HOUT 343H,ALMOV AL, N1OUT 342H,ALMOV AL, N2OUT 342H,AL9.4 若已有一频率发生器,其频率为1MHZ,若要示求通过计数器/定时器8253,着重产生每秒一次的信号,8253应如何连接?编写出初始化程序。解:1MHZ的信号要变为每秒一次,则需经过106分频。一个通道的计数为16 位最大为65536。故需要需两个通道级连,则每个通道计数为1000。用通道0和通道1级连,都工作在方式2,初始化程序为:MOV AL, 34HOUT 343H, ALMOV AL, 0E8HOUT 342H, ALMOV AL, 03OUT 342H, ALMOV AL, 74HOUT 343H, ALMOV AL, 0E8HOUT 342H, ALMOV AL, 03OUT 342H, AL9.9 编程将计数器/定时器8253计数器0设置为模式1,计数初值3000H;计数器1设置为模式2初值为2010H;计数器2设置为模式4初值为4030H;解: 若端口地址为:0F8H~0FBH,初始化程序为:MOV AL, 32HOUT 0FBH, ALMOV AL, 00HOUT 0F8H, ALMOV AL, 30HOUT 0F8H, ALMOV AL, 74HOUT 0FBH, ALMOV AL, 10HOUT 0F9H, ALMOV AL, 20HOUT 0F9H, ALMOV AL, 0B8HOUT 0FBH, ALMOV AL, 30HOUT 0FAH, ALMOV AL, 40HOUT 0FAH, AL第10 章作业答案10.4 可编程并行接口芯片8255A的3个端口在使用时有什么差别?解:通常端口A或B作为输入输出的数据端口(端口A还可以作为双向数据端口),而端口C作为控制或状态信息的端口,它在

第一章作业1.1微处理器、微型计算机和微型计算机系统三者之间有什么不同?解:把CPU(运算器和控制器)用大规模集成电路技术做在一个芯片上,即为微处理器。微处理器加上一定数量的存储器和外部设备(或外部设备的接口)构成了微型计算机。微型计算机与管理、维护计算机硬件以及支持应用的软件相结合就形成了微型计算机系统。1.2 CPU在内部结构上由哪几部分组成?CPU应该具备哪些主要功能?解:CPU主要由起运算器作用的算术逻辑单元、起控制器作用的指令寄存器、指令译码器、可编程逻辑阵列和标志寄存器等一些寄存器组成。其主要功能是进行算术和逻辑运算以及控制计算机按照程序的规定自动运行。1.3 微型计算机采用总线结构有什么优点?解:采用总线结构,扩大了数据传送的灵活性、减少了连线。而且总线可以标准化,易于兼容和工业化生产。1.4 数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用一套总线或者合用部分总线,那么要靠什么来区分地址和数据?解:数据总线是双向的(数据既可以读也可以写),而地址总线是单向的。8086CPU为了减少芯片的引脚数量,采用数据与地址线复用,既作数据总线也作为地址总线。它们主要靠信号的时序来区分。通常在读写数据时,总是先输出地址(指定要读或写数据的单元),过一段时间再读或写数据。1.8在给定的模型中,写出用累加器的办法实现15×15的程序。解:LD A, 0LD H, 15LOOP:ADD A, 15DEC HJP NZ, LOOPHALT第2 章作业答案2.1 IA-32结构微处理器直至Pentillm4,有哪几种?解:80386、30486、Pentium、Pentium Pro、Peruium II 、PentiumIII、Pentium4。2.6 IA-32结构微处理器有哪几种操作模式?解:IA一32结构支持3种操作模式:保护模式、实地址模式和系统管理模式。操作模式确定哪些指令和结构特性是可以访问的。2.8 IA-32结构微处理器的地址空间如何形成?解:由段寄存器确定的段基地址与各种寻址方式确定的有效地址相加形成了线性地址。若末启用分页机制,线性地址即为物理地址;若启用分页机制,则它把线性地址转为物理地址。2.15 8086微处理器的总线接口部件由哪几部分组成?解:8086微处理器中的总线接口单元(BIU)负责CPU与存储器之间的信息传送。具体地说,BIU既负责从内存的指定部分取出指令,送至指令队列中排队(8086的指令队列有6个字节,而8088的指令队列只有4个字节);也负责传送执行指令时所需的操作数。执行单元(EU)负责执行指令规定的操作。2.16 段寄存器CS=120OH,指令指针寄存器IP=FFOOH,此时,指令的物理地址为多少?解:指令的物理地址=12000H+FFOOH=21FOOH3.1分别指出下列指令中的源操作数和目的操作数的寻址方式。(1)MOV SI, 30O(2)MOV CX, DATA[DI](3)ADD AX, [BX][SI](4)AND AX, CX(5)MOV [BP], AX(6)PUSHF解:(l)源操作数为立即寻址,目的操作数为寄存器寻址。(2)源操作数为变址寄存器加位移量寻址,目的操作数为寄存器寻址。(3)源操作数为基址加变址寻址,目的操作数为寄存器寻址。(4)源操作数和目的操作数都为寄存器寻址。(5)源操作数为寄存器寻址,目的操作数为寄存器间接寻址。(6)为堆栈操作。3.2 试述指令MOV AX,2000H和MOV AX,DSz[2000H]的区别。解:前一条指令是立即寻址,即把立即数2000H传送至寄存器AX。后一条指令是直接寻址,是把数据(DS)段中的地址为200OH单元的内容传送至寄存器AX。3.3 写出以下指令中内存操作数的所在地址。(1)MOV AL, [BX+10](2)MOV [BP+10], AX(3)INC BYTE PTR[SI十5](4)MOV DL, ES:[BX+SI](5)MOV BX , [BP+DI+2]解:(1)数据段BX+10单元。(2)堆栈段BP+10单元。(3)数据段SI+5字节单元。(4)附加段(ES段)BX+SI单元。(5)堆栈段BP+DI+2单元。3.4 判断下列指令书写是否正确。(1)MOV AL, BX(2)MOV AL, CL(3)INC [BX](4)MOV 5, AL(5)MOV [BX], [SI](6)M0V BL, OF5H(7)MOV DX, 2000H(8)POP CS(9)PUSH CS解:(l)不正确,AL与BX数据宽度不同。(2)正确。(3)不正确,因为不明确是增量字节还是字。(4)不正确,立即数不能作为目的操作数。(5)不正确,因为不明确要传送的是字节还是字。(6)正确。(7)正确。(8)不正确,CS不能作为:pop指令的操作数。(9)不正确,CS不能作为PUSH指令的操作数。3.5 设堆钱指针SP的初值为1000H,AX=2000H, BX=3000H,试问:(1)执行指令PUSH AX后SP的值是多少?(2)再执行PUSH BX及POP AX后,SP、AX和BX的值各是多少?解:(1) SP=OFFEH。(2) SP=OFFEH; AX=3000H, BX=3000H。3.6要想完成把[3000H]送[2000H]中,用指令:MOM [200OH], [300OH]是否正确?如果不正确,应该用什么方法实现?解: 不正确。正确的方法是:MOV AL, [300OH]MOV [2000H], AL3.7 假如想从200中减去AL中的内容,用SUB 200,AL是否正确?如果不正确,应该用什么方法?解:不正确。正确的方法是:MOV BL, 200SUB BL, AL3.8 试用两种方法写出从8OH端口读入信息的指令。再用两种方法写出从4OH口输出10OH的指令。解:(1)IN AL, 80H(2)MOV DX, 8OHIN AL, DX(3)MOV, AL, lOOHOUT 40H, AL4)MOV AL, 10OHMOV DX,4OHOUT DX, AL3.9假如:AL=20H,BL=1OH,当执行CMP AL,BL后,问:(1)AL、BL中的内容是两个无符号数,比较结果如何?影响哪儿个标志位?(2)AL、BL中的内容是两个有符号数,结果又如何,影响哪几个标志位?解:(l)AL=2OH,BL=1OH,O=0,S=0,Z=0,A=0,P=0,C=0。(2)因为两个都是符号正数,其结果与(l)相同。3.10 若要使AL×10,有哪几种方法,试编写出各自的程序段?解:(1)使用乘法指令:MOV BL,10MUL BI,(2)使用移位指令:SHL AL,1MOV BL,ALSHL AL, 2ADD AL,BL(3)使用加法指令:ADD AL,ALMOV BL, ALADD AL, ALADD AL, ALADD AL, BL3.11 8086汇编语言指令的寻址方式有哪几类?哪种寻址方式的指令执行速度最快?解:寻址方式分为:立即数寻址方式、寄存器操作数寻址方式和存储器操作数寻址方式。其中,寄存器操作数寻址方式的指令执行速度最快。3.12 在直接寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?如果要用某个段寄存器指出段地址,指令中应该如何表示?解:默认的数据访问,操作数在DS段;堆栈操作在SS段;串操作源操作数(SI)在DS段,目的操作数(DI)在ES段;用BP作为指针在SS段。如果要显式地指定段地址,则在操作数中规定段寄存器。例如:MOV AX, ES:(BX+10H)3.13 在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,那么如何确定段地址?解:在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,段地址是隐含约定的,也就是隐含地选择段寄存器。如操作类型为指令,则指定代码段寄存器CS,如操作类型为堆栈操作,则指定堆找段寄存器SS,…,如表3-1中所示。当需要超越约定时,通常用段替代前缀加冒号指针。MOV指令不能实现内存单元间的数据传送。XCHG指令是交换,有一个操作数必须是寄存器。3.17下面这些指令中哪些是正确的?哪些是错误的?若是错误的,请说明原因。(1)XCHG CS, AX(2)MOV [BX], [1000](3)XCHG BX, IP(4)PUSH CS(5)POP CS(6)IN BX, DX(7)MOV BYTE[BX], 100O(8)MOV CS, [1000]解:(l)错误,CS不能交换。(2)错误,MOV指令不能在内存间传送。(3)错误,IP不能交换。(4)错误,CS可以作为PUSH指令的操作数。(5)错误,CS可以作为POP指令的操作数。(6)错误,IN指令的目的操作数是累加器。(7)错误,目的操作数是字节单元。(8〉错误,CS不能作为MOV指令的目的操作数。3.18 以下是格雷码的编码表,O 00001 00012 00113 00104 01105 01116 01017 01008 1100请用换码指令和其他指令设计一个程序段,以实现由格雷码向ASCII码的转换。解:MOV BX,TABLEMOV SI,ASCII_TABMOV AL,0MOV CX,10TRAN: XLAT TABLEMOV DL,ALADD DL,30HMOV [SI],DLINC ALLOOP TRAN3.19 使用乘法指令时,特别要注意先判断是用有符号数乘法指令还是用无符号数乘法指令,这是为什么?解:因为有符号数和无符号数,其数的乘法是一样的。但结果的符号取决于两个操作数的符号。3.20 字节扩展指令和字扩展指令一般用在什么场合?举例说明。解:主要用于字节相除和字相除之前,把被除数扩展为两倍宽度的操作数。3.21 什么叫BCD码?什么叫组合的BCD码?什么叫非组合的BCD码?8086汇编语言在对BCD码进行加、减、乘、除运算时,采用什么方法?解:BCD码为十进制编码的二进制数。组合的BCD数是把两位BCD加在一个字节中,高位的在高4位。非组合的BCD码是把一位BCD数放在一个字节的低4位,高4位为0。8086在BCD加、减和乘法运算以后用BCD调整指令把结果调整为正确的BCD数。在BCD除法之前先用BCD调整指令再做除法.3.22 用普通运算指令执行BCD码运算时,为什么要进行十进制调整?具体地讲,在进行BCD码的加、减、乘、除运算时,程序段的什么位置必须加上十进制调整指令?解:因为8086指令把操作数作为二进制数进行二进制运算,要得到正确的BCD结果,需要进行调整。在加、减、乘法指令之后加上BCD调整指令,而在除法指令之前先用BCD调整指令再用除法指令。第4章作业答案4.1 在下列程序运行后,给相应的寄存器及存储单元填入运行的结果:MOV AL, 1OHMOV CX, 100OHMOV BX , 2000HMOV [CX],ALXCHG CX, BXMOV DH, [BX]MOV DL, 01HXCHG CX, BXMOV [BX],DLHLT解:寄存器及存储单元的内容如下:AL = 1OHBL = OOHBH = 2OHCL = OOHCH = 1OHDH = 1OH(10O0H) = lOH(200OH) = 0lH2.要求同题4.1,程序如下:MOV AL, 50HMOV BP, 100OHMOV BX, 200OHMOV [BP], ALMOV DH, 20HMOV [BX], DHMOV DL, OlHMOV DL, [BX]MOV CX, 300OHHLT解:寄存器及存储单元的内容如下:AL = 5OHBL = OOHBH = 20HCL = OOHCH = 30HDL = 20HDH = 2OHBP = 100OH(10OOH) = 5OH(20OOH) = 20H4.3 自1000H单元开始有一个100个数的数据块,若要把它传送到自200OH开始的存储区中去,可以采用以下3种方法实现,试分别编制程序以实现数据块的传送。(l)不用数据块传送指令(2)用单个传送的数据块传送指令(3)用数据块成组传送指令。解:(1) LEA SI, 1OOOHLEA DI, 200OHMOV CX, 100L1: MOV AX, [SI]MOV [DI], AXLOOP LlHLT(2) LEA SI, 100OHLEA DI, 2000HMOV CX, 100CLDL1: MOVSBLOOP L1HLT(3) LEA SI, 100OHLEA DI, 200OHMOV CX, 100CLDREP MOVSBHLT4.4 利用变址寄存器,编写一个程序,把自1000H单元开始的100个数传送到自1070H开始的存储区中去。解:LEA SI, 100OHLEA DI, 1070HMOV CX, 100CLDREP MOVSBHLT4.5 要求同题4.4,源地址为2050H,目的地址为2000H,数据块长度为50.解:LEA SI, 205OHLEA DI, 200OHMOV CX, 50CLDREP MOVSBHLT4.6 编写一个程序,把自100OH单元开始的100个数传送'至105OH开始的存储区中(注意:数据区有重叠)。解:LEA SI, 100OHLEA DI , 1050HADD SI, 63HADD DI, 63HMOV CX, 100STDREP MOVSBHLT4.7 在自0500H单元开始,存有100个数。要求把它传送到1000H开始的存储区中,但在传送过程中要检查数的值,遇到第一个零就停止传送。解:LEA SI, 050OHLEA DI, 10OOHMOV CX, 100N1: MOV AL, [SI]CMP AL, 0JZ N2MOV [DI], ALINC SIINC DILOOP N1N2: HLT4.14若在0500H单元中有一个数(1)利用加法指令把它乘2,且送回原存储单元(假定X×2后仍为一个字节);(2)X×4;(3)X×10(假定X×l0≤255).解:(1) LEA BX, 050OHMOV AL, [BX]ADD AL, ALMOV [BX], AL(2) LEA BX, 0500HMOV AL, [BX]ADD AL, ALADD AL, ALMOV [BX], AL(3) LEA BX, 050OHMOV AL, [BX]ADD AL, ALMOV DL, ALADD AL, ALADD AL, ALADD AL, DLMOV [BX], AL5.1 总线周期的含义是什么?8086/8088CPU的基本总线周期由几个时钟组成?如果一个CPU的时钟频率为8MHz,那么,它的一个时钟周期是多少?一个基本总线周期是多少?如果主频为5MHz呢?解: CPLI访问总线(从内存储器或I/0端口读/写字节或字)所需的时间称为总线周期。8086/8088CPU的基本总线周期由4个时钟组成。若CPU的时钟频率为8(5)MHz,时钟周期为1/8MHz=125(1/5MHz=2O)ns,基本总线周期为4×125(200)ns=500(800)ns5.2 在总线周期的TI、T2、T3、T4状态,CPU分别执行什么动作?什么情况下需要插入等待状态Tw? Tw在哪儿插入? 怎样插入?解: 下面以存储器读为例进行说明。在Tl周期:输出地址信号、地址锁存允许信号、内存或I/O端口访问控制信号;在T2周期:CPIJ开始执行数据传送操作,此时,8086CPU内部的多路开关进行切换,将地址/数据线AD15~AD0上的地址撤销,切换为数据总线,为读写数据作准备。8288总线控制器发出数据总线允许信号和数据发送/接收控制信号DT/R允许数据收发器工作,使数据总线与8086CPU的数据线接通,并控制数据传送的方向。同样,把地址/状态线A19/S6~A16/S3切换成与总线周期有关的状态信息,指示若干与周期有关的情况。在T3周期:开始的时钟下降沿上,8086CPU采样READY线。如果READY信号有效(高电平),则在T3状态结束后进人TA状态。在T4状态开始的时钟下降沿,把数据总线上的数据读入CPU或写到地址选中的单元。在T4状态:结束总线周期。如果访问的是慢速存储器或是外设接口,则应该在Tl状态输出的地址,经过译码选中某个单元或设备后,立即驱动READY信号到低电平。8086CPU在T3状态采样到READY信号无效,就会插入等待周期Tw,在Tw状态CPU继续采样READY信号;直至其变为有效后再进人T4状态,完成数据传送,结束总线周期。在T4状态,8086CPU完成数据传送,状态信号2 0 。S ~ S6.1 若有一单板机,具有用8片2114构成的4KBRAM,连线如图创所示。若以每1KB RAM作为一组,则此4组RAM的基本地址是什么?地址有没有重叠区?每一组的地址范围为多少?解:RAM的基本地址为:第一组OOOOH ~ 03FFH第二组4000H ~ 43FFH第三组8000H ~ 83FFH第四组COOOH ~ C3FFH地址有重叠区。每一组的地址范围为OOOH ~ 3FFH(1024个字节)6.4 若要扩充1KB RAM(用2114片子),规定地址为8000H~83FFH,地址线应该如何连接?解: 扩充lKB RAM至规定地址8000H ~ 83FFH,其地址线的低10位接芯片,高6位地址(Al5 ~A10 = 100000)产生组选择信号。第7 章作业答案7.1 外部设备为什么要通过接口电路和主机系统相连?解: 因为外部设备种类繁多,输入信息可能是数字量、模拟量或开关量,而且输入速度、电平、功率与CPU差距很大。所以,通常要通过接口电路与主机系统相连。7.4 CPU和输入输出设备之间传送的信息有哪几类?解:CPU和输入输出设备之间传送的信息主要有3类。(l)数据在微型计算机中,数据通常为8位、16位或32位。(2)状态信息在输入时,有输入设备的信息是否准备好;在输出时有输出设备是否有空,若输出设备正在输出信息,则以忙指示等。(3)控制信息例如,控制输入输出设备启动或停止等。7.9 设一个接口的输入端口地址为0100H,状态端口地址为0104H,状态端口中第5位为1表示输入缓冲区中有一个字节准备好,可以输入。设计具体程序以实现查询式输入。解: 查询输入的程序段为:POLl : IN AL, 0104HAND AL, 20HJZ POLlIN AL, 0100H第8 章作业答案8.1 在中断响应过程中,8086CPU向8259A发出的两个RT互信号分别起什么作用?解: CPU发出的第一个INTA脉冲告诉外部电路,其提出的中断请求已被响应,应准备将类型号发给CPU,8259A接到了这个INTA脉冲时,把中断的最高优先级请求置入中断状态寄存器(ISR)中,同时把IRR(中断请求寄存器)中的相应位复位。CPU发出的第二个INTA脉冲告诉外部电路将中断的类型号放在数据总线上。8.2 8086CPU最多可以有多少个中断类型?按照产生中断的方法分为哪两大类?解:8086CPU最多可以有256个中断类型。按照产生中断的方法,可以分为内部中断(软件中断)和外部(硬件中断)中断两大类。8.9 在编写中断处理子程序时,为什么要在子程序中保护许多寄存器?解: 因为在用户程序运行时,会在寄存器中有中间结果,当在中断服务程序中要使用这些寄存器前要把这些寄存器的内容推至堆栈保存(称为保护现场)。在从中断服务程序返回至用户程序时把这些内容从堆找恢复至寄存器中(称为恢复现场)。8.12 若在一个系统中有5个中断源,其优先权排列为:1、2、3、4、5,它们的中断服务程序的入口地址分别为:3000H、302OH、3050H、3080H、30AOH。编写一个程序,当有中断请求CPU响应时,能用查询方式转至申请中断的优先权最高的源的中断服务程序。解: 若5个中断源的中断请求放在一中断状态寄存器中,按优先权分别放在状态的7位(优先权最高)至位3中。查询方法的程序段为:IN AL, STATUSCMP AL, 80HJNE N1JMP 3000HN1: IN AL, STATUSCMP AL, 40HJNE N2JMP 3020HN2: IN AL, STATUSCMP AL, 20HJNE N3JMP 3050HN3: IN AL, STATUSCMP AL, 10HJNE N4JMP 3080HN4: IN AL, STATUSCMP AL, 08HJNE N5JMP 30A0HN5: RET第9章作业答案9.3 在某一应用系统中,计数器/定时器8253地址为340H~343H,定时用作分频器(N为分频系数),定时器2用作外部事件计数器,如何编制初始化程序?解:定时器0用作分频器,工作方式2,其初始化程序为:MOV AL, 34HOUT 343H, ALMOV AL, N1OUT 342H, ALMOV AL, N2OUT 342H, AL定时器2用作外部事件计数器,工作在方式0,其初始程序:MOV AL, 0B0HOUT 343H,ALMOV AL, N1OUT 342H,ALMOV AL, N2OUT 342H,AL9.4 若已有一频率发生器,其频率为1MHZ,若要示求通过计数器/定时器8253,着重产生每秒一次的信号,8253应如何连接?编写出初始化程序。解:1MHZ的信号要变为每秒一次,则需经过106分频。一个通道的计数为16 位最大为65536。故需要需两个通道级连,则每个通道计数为1000。用通道0和通道1级连,都工作在方式2,初始化程序为:MOV AL, 34HOUT 343H, ALMOV AL, 0E8HOUT 342H, ALMOV AL, 03OUT 342H, ALMOV AL, 74HOUT 343H, ALMOV AL, 0E8HOUT 342H, ALMOV AL, 03OUT 342H, AL9.9 编程将计数器/定时器8253计数器0设置为模式1,计数初值3000H;计数器1设置为模式2初值为2010H;计数器2设置为模式4初值为4030H;解: 若端口地址为:0F8H~0FBH,初始化程序为:MOV AL, 32HOUT 0FBH, ALMOV AL, 00HOUT 0F8H, ALMOV AL, 30HOUT 0F8H, ALMOV AL, 74HOUT 0FBH, ALMOV AL, 10HOUT 0F9H, ALMOV AL, 20HOUT 0F9H, ALMOV AL, 0B8HOUT 0FBH, ALMOV AL, 30HOUT 0FAH, ALMOV AL, 40HOUT 0FAH, AL第10 章作业答案10.4 可编程并行接口芯片8255A的3个端口在使用时有什么差别?解:通常端口A或B作为输入输出的数据端口(端口A还可以作为双向数据端口),而端口C作为控制或状态信息的端口,它在


相关文章

  • 大学几乎所有学科的课本答案[2]
  • 大学几乎所有学科的课本答案! 来源: 任明嘉的日志 经济金融 [PDF格式]<会计学原理>同步练习题答案 [Word格式]<成本会计>习题及答案(自学推荐,23页) [Word格式]<成本会计>配套习题集 ...查看


  • 在大学里寻找课后答案的必去之处
  • 3500份课后答案,很值得收藏,这里只介绍了一部分. 还有很多,可以去课后答案网(http://www.khdaw.com/bbs)查找. ##################[公共基础课-答案]#################### 新 ...查看


  • [大学计算机基础教程]的课后答案
  • 习题与参考答案 第1章 概述 简答题: 1.计算机是一种能按照事先存储的程序,自动.高速地进行大量数值计算和各种信息处理的现代化智能电子装置. 2.计算机的5个组成部分是:输入.存储.处理(运算).控制和输出.输入用来将用户的程序和数据送入 ...查看


  • 第二章微机原理习题答案
  • 微机原理课后问题解答 第二章习题答案 一. 将下列十进制数转换成二进制数. (1)36 (2)0.628 (3)129.313 (4)1000 答:(1)100100 (2)0.1010 (3)129.313 (4)1111101000 二 ...查看


  • 规范化课堂标准
  • 淄博建筑工程学校 规范化课堂标准 第一部分 文化课.理论课 一.课堂礼仪规范 1.教师上课时穿着应大方得体,符合教师职业形象.男教师不留长发,女教师不化浓妆. 2.教师在课堂上应使用礼貌语言.普通话,讲究语言艺术,流畅.生动,富有感染力.严 ...查看


  • 计算机网络原理与应用作业答案
  • <计算机网络原理与应用>作业答案 客观题部分: 一.选择题(每题1分,共15题) 参考答案: 1.D 2.A 3.B 4.C 5.B 6.D 7.A 8.B 9. B 10. B 11.C 12. B 13. D 14. D 1 ...查看


  • 微机原理期末复习题答案
  • 请注意:本复习题中绝对不会出现考试原题,仅作为题目类型及难度参考用,请大家不要 背题目,认真按照复习提纲复习,多看看课堂实例.平时作业.课堂练习和实验报告,希望大家都能顺利通过考试! 一.选择题 1. 在DMA 方式下,CPU 与总线的关系 ...查看


  • 8.计算机安全习题及答案
  • 1. 防止软磁盘感染计算机病毒的一种有效方法是______. A. 软盘远离电磁场 B. 定期对软磁盘作格式化处理 C. 对软磁盘加上写保护 D. 禁止与有病毒的其他软磁盘放在一起 2. 发现微型计算机染有病毒后,较为彻底的清除方法是___ ...查看


  • KV高压开关柜母联备自投的工作原理是什么
  • KV高压开关柜母联备自投的工作原理是什么?和操作规程? 5 [ 标签:高压开关柜,工作原理,操作规程 ] 母联备自投工作原理? 陪ni寻找幸福 回答:1 人气:61 解决时间:2011-04-22 22:17 满意答案 好评率:0% (一) ...查看


热门内容