计算机原理习题答案04

第四章 80x86汇编语言程序设计习题与答案1、指出以下数据定义伪指令所分配的字节数(8086系统)。

(1)DATA1 DB 10,?,‘A’(2)DATA2 DW 10 DUP(2,3 DUP(?),1)(3)DATA3 DB ‘HELLO,WORLD!’,‘$’(4)DATA4 DW DATA4解:(1)3字节;(2)100字节;(3)13字节;(4)2字节。

2、指出以下数据定义伪指令所分配的字节数(80386系统)。

(1)DATA1 DF 12,34,56(2)DATA2 DF DATA2(3)DATA3 DQ 0,10 DUP(?)(4)DATA4 DT 0,1,2解:(1)18字节;(3)6字节;(3)88字节;(4)30字节。

3、指出以下指令中哪些是无效的,并说明原因。

(1)ADDR DB $(2)DATA DB F0H,12H(3)1_DATA DW 1234H(4)@VAR DW VAR1 ;VAR1为一个字节变量(5)MOV AX,[10-VAR1] ;VAR1为一个字变量(6)MOV BX,[VAR2*2+1] ;VAR2为一个字变量解:(1)非法,地址计数器$是32位数;(2)非法,以字母开头的16进制数应在前面加“0”,即应为“0F0H”;(3)非法,变量名非法,不能以数字开头;(4)合法;(5)非法,地址表达式不能是“常数-地址”;(6)非法,地址表达式不能出现乘法。

4、假设已定义数据段如下:DATA SEGMENTORG 100HDATA1 DB 10 DUP(1,2,3)DATA2 DW DATA1,$DATA ENDS且段寄存器DS已初始化为该数据段的段基址(假设段基址为1234H)。

请指出以下指令执行后,相应的寄存器中的内容。

(1)MOV AX,WORD PTR DATA1 ;(AX)=?(2)MOV BX,DATA2 ;(BX)=?(3)MOV CX,DATA2+2 ;(CX)=?(4)MOV DX,OFFSET DATA2 ;(DX)=?(5)MOV SI,SEG DATA1 ;(SI)=?(6)MOV DI,LENGTH DATA1 ;(DI)=?(7)MOV SP,TYPE DATA1 ;(SP)=?(8)MOV BP,SIZE DATA2 ;(BP)=?解:(1)(AX)=0201H;(2)(BX)=0100H;(3)(CX)=0120H;(4)(DX)=011EH;(5)(SI)=1234H;(6)(DI)=000AH;(7)(SP)=0001H;(8)(BP)=0002H。

5、在8086系统下,编写完整程序,实现从键盘上输入8位二进制数,从显示器上显示相应的16进制数,例如从键盘上输入“00010010”,应在显示器上显示“12H”。

解:参考程序:DATA SEGMENTMSG1 DB 'Input binary number(ESC to exit):','$'MSG2 DB 0AH,0DH,'Input error!',0AH,0DH,'$'DATA ENDSOUTPUT MACRO ASC ;定义输出一个字符的宏MOV DL, ASCMOV AH, 2INT 21HENDMCODE SEGMENTASSUME CS:CODE, DS:DATAMAIN PROC FARPUSH DSMOV AX, 0PUSH AXMOV AX, DATAMOV DS, AXAGAIN: LEA DX, MSG1MOV AH, 9INT 21H ;提示输入信息MOV CX, 8 ;输入8位二进制数MOV BL, 0L: MOV AH, 1INT 21HSHL BL, 1CMP AL, 1BH ;ESC键退出JZ DONECMP AL, '0' ;输入“0”JZ NEXTCMP AL, '1' ;输入“1”JNZ ERROR ;输入其他则出错INC BLNEXT: LOOP LOUTPUT 0AHOUTPUT 0DHPUSH BXMOV CL, 4SHR BL, CLCALL TRAN ;显示高4位对应的16进制数POP BXAND BL, 0FHCALL TRAN ;显示低4位对应的16进制数OUTPUT 'H'OUTPUT 0AHOUTPUT 0DHJMP AGAINERROR: LEA DX, MSG2MOV AH, 9INT 21HJMP AGAINDONE: RETMAIN ENDPTRAN PROC FARCMP BL, 0AHJB BELOWADD BL, 7BELOW: ADD BL, 30HOUTPUT BLRETTRAN ENDPCODE ENDSEND MAIN6、在8086系统下,编写完整程序,实现从键盘上输入两个4位十进制数,从显示器上显示这两个数之和,例如输入“1234”、“5678”,应在显示器上显示“6912”。

解:参考程序:DATA SEGMENTMSG1 DB 'Input the first number(ESC to exit):','$'MSG2 DB 'Input the second number(ESC to exit):','$'MSG3 DB 0AH,0DH,'Input error!Input again:','$'DATA ENDSOUTPUT MACRO ASC ;定义输出一个字符的宏MOV DL, ASCMOV AH, 2INT 21HENDMCODE SEGMENTASSUME CS:CODE, DS:DATAMAIN: MOV AX, DATAMOV DS, AXAGAIN: LEA DX, MSG1MOV AH, 9INT 21H ;提示输入第一个数CALL INPUT ;输入过程PUSH BXOUTPUT 0AHOUTPUT 0DHLEA DX, MSG2MOV AH, 9INT 21H ;提示输入第二个数CALL INPUT ;输入过程OUTPUT 0AHOUTPUT 0DHPOP AX ;实现两个4位组合BCD码相加ADD AL, BL ;低8位相加DAA ;校正MOV CL, AL ;保存至CLADC AH, BH ;高8位相加MOV AL, AH ;移至ALDAA ;校正MOV AH, ALMOV AL, CLMOV BX, AX ;最后结果放在BX中JNC NEXTOUTPUT '1' ;如果相加结果大于9999,则显示进位“1”NEXT: PUSH BXMOV CL, 4SHR BH, CLADD BH, 30HOUTPUT BH ;显示千位数POP BXPUSH BXAND BH, 0FHADD BH, 30HOUTPUT BH ;显示百位数POP BXPUSH BXMOV CL, 4SHR BL, CLADD BL, 30HOUTPUT BL ;显示十位数POP BXAND BL, 0FHADD BL, 30HOUTPUT BL ;显示个位数OUTPUT 0AHOUTPUT 0DHJMP AGAININPUT PROC FAR ;输入一个4位十进制数的过程BEGIN: MOV CX, 4MOV BX, 0L: SHL BX, 1SHL BX, 1SHL BX, 1SHL BX, 1 ;BX的值乘以16MOV AH, 1INT 21H ;输入CMP AL, 1BH ;ESC键退出JZ DONECMP AL, '0'JB ERROR ;非数字,出错CMP AL, '9'JA ERROR ;非数字,出错SUB AL, 30HXOR AH, AHADD BX, AX ;将输入加到BX中LOOP LRETERROR: LEA DX, MSG3MOV AH, 9INT 21HJMP BEGINDONE: MOV AH, 4CHINT 21HINPUT ENDPCODE ENDSEND MAIN7、在8086系统下,编写完整程序,实现两个32位带符号数相乘。

假设被乘数存放在以字变量MUL1开始的连续4个字节中,乘数存放在以字变量MUL2开始的连续4个字节中中,相乘结果存放在以字变量RES开始的连续8个字节中。

解:参考程序:DATA SEGMENTMUL1 DW 0FFFFH,0FFFFH ;被乘数MUL2 DW 5678H,1234H ;乘数RES DW 4 DUP(0) ;结果DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATAMAIN PROC FARPUSH DSMOV AX, 0PUSH AXMOV AX, DATAMOV DS, AXMOV CX, MUL1MOV BP, MUL1+2MOV SI, MUL2MOV DI, MUL2+2TEST BP, 8000H ;被乘数是否为负数JZ NEXT1NOT BP ;为负数,则取反加1NOT CXADD CX, 1ADC BP, 0NEXT1: TEST DI, 8000H ;乘数是否为负数JZ NEXT2NOT SI ;为负数,则取反加1NOT DIADD SI, 1ADC DI, 0NEXT2: MOV AX, SI ;相乘过程MUL CXMOV RES, AXMOV RES+2, DXMOV AX, SIMUL BPADD RES+2, AXADC RES+4, DXMOV AX, DIMUL CXADD RES+2, AXADC RES+4, DXMOV AX, DIMUL BPADD RES+4, AXADC RES+6, DXMOV AX, MUL1+2XOR AX, MUL2+2 ;判断被乘数和乘数是否同号JNS DONE ;同号,则结果为正数,无须修改结果NOT RES ;不同号,则结果为负数,须取反加1NOT RES+2NOT RES+4NOT RES+6ADD RES, 1ADC RES+2, 0ADC RES+4, 0ADC RES+6, 0DONE: RETMAIN ENDPCODE ENDSEND MAIN8、在8086系统下,编写完整程序,找出字节数组ARRAY中的最大值和最小值。

假设ARRAY 的长度为100个字节,每个字节为一个无符号数,程序执行后最大值将存放到字节变量MAX 中,最小值则存放到字节变量MIN中。

解:参考程序:DATA SEGMENTARRAY DB 100 DUP(?);字节数组MAX DB ? ;最大值MIN DB ? ;最小值DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATAMAIN PROC FARPUSH DSMOV AX, 0PUSH AXMOV AX, DATAMOV DS, AXLEA SI, ARRAYCLDMOV BH, 0 ;存放临时最大值的寄存器MOV BL, 0FFH ;存放临时最小值的寄存器MOV CX, 100AGAIN: LODSBCMP AL, BHJNA NEXT1MOV BH, AL ;如果当前数值比临时最大值大,则代替NEXT1: CMP AL, BLJNB NEXT2MOV BL, AL ;如果当前数值比临时最小值小,则代替NEXT2: LOOP AGAINMOV MAX, BHMOV MIN, BLRETMAIN ENDPCODE ENDSEND MAIN9、在8086系统下,编写完整程序,将字节数组ARRAY中的所有数据往高地址的方向移动一位,即原来存放在ARRAY中的字节移动到ARRAY+1中,原来存放在ARRAY+1中的字节移动到ARRAY+2中,……,依此类推。

合集下载

《计算机原理》8套习题及答案自学推荐

《计算机原理》8套习题及答案自学推荐

习题1:1. 微机基本结构是什么?微处理器、微型计算机、微型计算机系统有何区别?2. 用二进制补码表示-41、+74、-112?3. 数值转换:114.175= ( ) 2=( )1611001.101B= ( )16= ( )104. 计算机内有一个字节代码10110110B(1) 若把它作为无符号数,则与之对应的十进制是();(2) 若把它作为有符号补码,则与之对应的十进制是();(3) 若把它作为ASCII码,而且最高位为奇偶校验位,则采用的是奇校验还是偶校验?该值是什么字符的ASCII码?ASCII码主要用于做什么?(4) 若把它作为非压缩BCD码,则对应的十进制数为()?注:奇、偶校验的概念●校验位与数值位中1的个数为偶数,则是偶校验●校验位与数值位中1的个数为奇数,则是奇校验(5) 8086中PF标志对运算结果的低8位进行校验,请问采用的是奇校验还是偶校验?5. 在计算机中有符号字节数X=20H, Y=90H,请问X+Y=?结果是否有溢出;X-Y=?结果是否有溢出。

6. 计算机中有符号数如何表示,一个字的有符号数范围是多少?7. 什么是总线,微机中按什么原则来使用总线?8. 总线按照功能分为那几类总线?按照在计算机中所处的位置又分为那几类总线?ISA、EISA、PCI三种局部总线有何特点?9. 计算机总线连接时为什么需要使用三态电路和锁存器?选作题:10. CISC架构的计算机与RISC架构的计算机有何区别?11. 浮点数在计算机中以何种格式进行存储?请举例说明习题1答案:1. 微机的基本结构包括主机和外设,主机又包括CPU、存储器、I/O接口和总线,外设包括输入设备和输出设备;微处理器主要指CPU;微型计算机包括主机和外设,其中主机包括微处理器,主要针对硬件部分;微型计算机系统包括微型计算机和软件系统,能够独立运行。

2. -41 = (11010111)2 +74 = (01001010)2 -112 = ( 10010000 )23. 数值转换:114.175= ( 0111 0010. 0011 ) 2=( 72.3 )16 (近似值)11001.101B= ( 19.A )16= ( 25.625 )104. 182;-74;奇校验,‘6’,ASCII用于计算机与外部交换信息;6;奇校验5 . X + Y 00100000+ 10010000= 10110000 结果不溢出X – Y 00100000- 10010000= 10010000 结果溢出6.计算机中有符号数用补码表示,一个字的范围是-32768 ~ 327677. 总线是用于传输信息的一组通信线;微机中按照分时复用原则使用总线;8. 按照功能分为:地址总线、数据总线和控制总线;按照位置分为:CPU总线、局部总线、系统总线和外部总线ISA总线宽度为16位,频率为8MHz,传输率为16MB/SEISA总线是ISA总线的增强,宽度32位,频率8MHz,传输率为32MB/s PCI总线总线宽度32位,可扩展到64位,总线频率33MHz,也可提高到66MHz,传输率为132MB/s,可扩展到528MB/s,支持即插即用9. 使用三态门可以增加驱动,用作数据输入到总线时的缓冲,当需要总线时,打开三态门,传送数据;不需要总线时,关闭三态门,输出为高阻状态,以便别的器件可以使用总线,因此多个器件接入总线时,一定要使用三态电路;使用D触发器可以进行信号保持,用作信息输出时的锁存习题2:1. 在8086微处理器中执行如下指令后,标志寄存器中状态标志为何值?MOV DX, 6E07HSUB DX, 800AH2. 8086管理的最大存储器空间和I/O端口空间是多少,写出地址范围?为什么8086对存储器要采用分段管理?3. 若程序执行之前,CS=E000H和IP=FE60H,则该程序入口物理地址是多少?指向这个入口地址的CS和IP的值是唯一的吗?4. 请画出8088最小模式下的总线连接电路?要求包含8282 、8284 、8286。

计算机组成原理第五版 白中英(详细)第4章习题参考答案

计算机组成原理第五版 白中英(详细)第4章习题参考答案

第4章习题参考答案1.ASCII码是7位,如果设计主存单元字长为32位,指令字长为12位,是否合理?为什么?答:不合理。

指令最好半字长或单字长,设16位比较合适。

一个字符的ASCII 是7位,如果设计主存单元字长为32位,则一个单元可以放四个字符,这也是可以的,只是在存取单个字符时,要多花些时间而已,不过,一条指令至少占一个单元,但只占一个单元的12位,而另20位就浪费了,这样看来就不合理,因为通常单字长指令很多,浪费也就很大了。

2.假设某计算机指令长度为32位,具有双操作数、单操作数、无操作数三类指令形式,指令系统共有70条指令,请设计满足要求的指令格式。

答:字长32位,指令系统共有70条指令,所以其操作码至少需要7位。

双操作数指令单操作数指令无操作数指令3.指令格式结构如下所示,试分析指令格式及寻址方式特点。

答:该指令格式及寻址方式特点如下:(1) 单字长二地址指令。

(2) 操作码字段OP可以指定26=64种操作。

(3) 源和目标都是通用寄存器(可分指向16个寄存器)所以是RR型指令,即两个操作数均在寄存器中。

(4) 这种指令结构常用于RR之间的数据传送及算术逻辑运算类指令。

4.指令格式结构如下所示,试分析指令格式及寻址方式特点。

15 10 9 8 7 4 3 0答:该指令格式及寻址方式特点如下:(1)双字长二地址指令,用于访问存储器。

(2)操作码字段OP可以指定26=64种操作。

(3)RS型指令,一个操作数在通用寄存器(选择16个之一),另一个操作数在主存中。

有效地址可通过变址寻址求得,即有效地址等于变址寄存器(选择16个之一)内容加上位移量。

5.指令格式结构如下所示,试分析指令格式及寻址方式特点。

答:该指令格式及寻址方式特点如下:(1)该指令为单字长双操作数指令,源操作数和目的操作数均由寻址方式和寄存器构成,寄存器均有8个,寻址方式均有8种。

根据寻址方式的不同,指令可以是RR型、RS型、也可以是SS型;(2)因为OP为4位,所以最多可以有16种操作。

计算机组成原理第4章习题参考答案

计算机组成原理第4章习题参考答案

计算机组成原理第4章习题参考答案第4章数值的机器运算4-2.某加法器采⽤组内并⾏,组间并⾏的进位链,4位⼀组,写出进位信号C6逻辑表达式。

[解] 组间并⾏的进位链,产⽣的最低⼀组的进位输出为:C4=G1*+P1*C0 (其中:G1*=G4+P4G3+P4P3G2+P4P3P2G1;P1*=P4P3P2P1)然后在组内产⽣进位信号C6:C6=G6+P6C5=G6+P6G5+P6P5C44-4.已知X和Y,使⽤它们的变形补码计算出X+Y,并指出结果是否溢出。

(1)X=0.11011,Y=0.11111(2)X=0.11011,Y=-0.10101(3)X=-0.10110,Y=-0.00001(4)X=-0.11011,Y=0.11110[解](1)[X]补=0.11011,[Y]补=0.1111100.11011 [X]补+00.11111 [Y]补01.11010 [X+Y]补结果正溢出!(2)[X]补=0.11011,[Y]补=1.0101100.11011 [X]补+11.01011 [Y]补00.00110 [X+Y]补结果不溢出!X+Y=0.00110(3)[X]补=1.01010,[Y]补=1.1111111.01010 [X]补+11.11111 [Y]补11.01001 [X+Y]补结果不溢出!X+Y=-0.10111(4)[X]补=1.00101,[Y]补=0.1111011.00101 [X]补+00.11110 [Y]补00.00011 [X+Y]补结果不溢出!X+Y=0.000114-5.已知X和Y,使⽤它们的变形补码计算出X-Y,并指出结果是否溢出。

(1)X=0.11011,Y=-0.11111(2)X=0.10111,Y=0.11011(3)X=0.11011,Y=-0.10011(4)X=-0.10110,Y=-0.00001[解](1)[X]补=0.11011,[Y]补=1.00001, [-Y]补=0.1111100.11011 [X]补+00.11111 [-Y]补01.11010 [X-Y]补结果正溢出!(2)[X]补=0.10111,[Y]补=0.11011, [-Y]补=1.0010100.10111 [X]补+11.00101 [-Y]补11.11100 [X-Y]补结果不溢出!X-Y=11.11100(3)[X]补=0.11011,[Y]补=1.01101, [-Y]补=0.1001100.11011 [X]补+00.10011 [-Y]补01.01110 [X-Y]补结果正溢出!(4)[X]补=1.01010,[Y]补=1.11111,[-Y]补=0.0000111.01010 [X]补+00.00001 [-Y]补11.01011 [X-Y]补结果不溢出!X-Y=-0.101014-6.已知:X=0.1011,Y=-0.0101求:[X/2]补 ,[X/4]补 ,[-X]补 ,[Y/2]补 ,[Y/4]补 ,[-Y]补,[2Y]补[解] 由[X]补=0.1011,[Y]补=1.1011 得:[X/2]补=0.0101,[X/4]补=0.0010,[-X]补=1.0101[Y/2]补=1.1101,[Y/4]补=1.1110,[-Y]补=0.0101,[2Y]补=1.01104-7. 设下列数据长8位,包括⼀位符号位,采⽤补码表⽰,分别写出每个数右移或左移两位之后的结果(1)0.1100100 (2) 1.0011001 (3) 1.1100110 (4)1.0000111[解] (1)右移两位后为 0.0011001 左移两位后为1.0010000(溢出)或0.0010000 (2)右移两位后为 1.1100110 左移两位后为0.1100100(溢出)或1.1100100(3)右移两位后为1.1111001 左移两位后为 1.0011000(4)右移两位后为 1.11000001 左移两位后为0.0011100(溢出)或1.00111004-8.分别⽤原码乘法和补码乘法计算X×Y.(1) X=0.11011,Y=-0.11111(2) X=-0.11010,Y=-0.01110[解]原码乘法:(1)|X|=0.11011 → B, |Y|=0.11111 →C,0→A5=1,+ |X|00.1101100.01101 1 0 1 1 1 1 部分积右移1位5=1,+ |X|01.0100000.10100 0 1 0 1 1 1 部分积右移1位5=1,+ |X|01.0111100.10111 1 0 1 0 1 1 部分积右移1位5=1,+ |X|01.1001000.11001 0 1 0 1 0 1 部分积右移1位5=1,+ |X|01.1010000.11010 0 0 1 0 1 0 部分积右移1位所以, |X×Y|=0.1101000101X×Y=-0.1101000101(2) |X|=0.11010 → B, |Y|=0.01110 → C, 0→A 5=0,+ 000.0000000.00000 0 0 0 1 1 1 部分积右移1位5=1,+ |X|00.1101000.01101 0 0 0 0 1 1 部分积右移1位5=1,+ |X|01.0011100.10011 1 0 0 0 0 1 部分积右移1位5=1,+ |X|01.0110100.10110 1 1 0 0 0 0 部分积右移1位5=0,+ 000.1011000.01011 0 1 1 0 0 0 部分积右移1位所以, |X×Y|=0.010*******X×Y=+0.010*******补码乘法:(1)[X]补=0.11011 → B, [Y]补=1.00001 → C, 0 → A [-X]补说明 + [-X]补5C 6=10,+ [-X]补11.0010111.10010 1 1 0 0 0 0 1 部分积右移1位+ [X]补5C 6=01,+ [X]补00.0110100.00110 1 1 1 0 0 0 0 部分积右移1位5C 6=00,+ 000.0011000.00011 0 1 1 1 0 0 0 部分积右移1位5C 6=00,+ 000.0001100.00001 1 0 1 1 1 0 0 部分积右移1位5C 6=00,+ 000.0000100.00000 1 1 0 1 1 1 0 部分积右移1位+ [-X]补 5C 6=10,+ [-X]补所以, [X×Y]补=1.0010111011X×Y =-0.1101000101(2)[X]补=1.00110 → B, [Y]补=1.10010 → C, 0→A [-X]补说明5C 6=00,+ 01位+ [-X]补 00.11010 C 5C 6=10,+ [-X]补00.1101000.01101 0 0 1 1 0 0 1 部分积右移1位+ [X]补 11.00110 C 5C 6=01,+ [X]补11.1001111.11001 1 0 0 1 1 0 0 部分积右移1位+ 0 00.00000 C 5C 6=00,+ 011.1100111.11100 1 1 0 0 1 1 0 部分积右移1位+ [-X]补 00.11010 C 5C 6=10,+[-X]补00.1011000.01011 0 1 1 0 0 1 1 部分积右移1位+ 0 5C 6=11,+ 000.01011所以, [X×Y]补=0.010*******X×Y = 0.010*******4-10.分别⽤原码和补码加减交替法计算X/Y 。

单片机微型计算机原理及接口技术课后习题答案第4章

单片机微型计算机原理及接口技术课后习题答案第4章

单片机微型计算机原理及接口技术课后习题答案第4章4-2 试述指令MOV A,R0和MOV A,@R0的区别两条指令的目的操作数相同,两条指令的区别在于源操作数来源不同:MOV A,R0 指令的源操作数就是R0寄存器的内容;而MOV A,@R0 指令的源操作数是位于存储器单元内,且存储器单元的地址是R0寄存器的内容。

4-3 试述指令MOV A,20H和MOV A,#20H的区别MOV A,20H 源操作数是直接寻址,20H表示源操作数所在存储器单元的地址。

MOV A,#20H 源操作数是立即数寻址,#20H是立即数,也就是源操作数。

4-4 说明一下指令中源操作数所在的存储器类型。

(1)MOV A,#30H; 立即数#30H,就是源操作数,存在于指令中,所以位于程序存储器。

(2)MOV A,30H; 30H是源操作数所在数据存储单元的地址,所以源操作数位于数据存储器。

(3)MOVC A,@A+DPTR;源操作数是变址寻址, 助记符MOVC表示源操作数位于程序存储器。

(4)MOVX A,@DPTR; 源操作数是寄存器间接寻址, 助记符MOVX表示源操作数位于外部数据存储器。

4-5 判断下列指令书写是否正确:(1)MOV A,B; ✔(2)MOV A,#3000H ; ✘,因为A是8位寄存器,而#3000H是16位数值,没法全部存到A里(3)INC,#20H ; ✘只能INC A/direct/Rn/@Ri/DPTR(4)MOV 5,A ; ✔,注意目的操作数是直接寻址方式,不是立即寻址(5)MOV 30H,40H; ✔(6)MOV B,@DPTR ; ✘,@DPTR寻址用于MOVX指令,不能用于MOV指R(7)CJNE 30H,#80H,NEXT ; ✘,CJNE指令格式只能是CJNE A/Rn/@Ri,#data,rel或CJNE A,direct,rel(8)POP A ; ✘只能是直接寻址方式POP direct,正确的是POP ACC(9)PUSH ACC; ✔(10)SJMP 2000H ; ✘rel的范围是-128~127(用补码表示其值)共256B范围4-6 设ACC=12H,B=64H,SP=60H,30H中存放的是78H,试分析下列程序执行后,ACC、B、30H、SP中的内容分别为多少,并画出堆栈示意图。

计算机组成原理课后习题答案(一到九章)

计算机组成原理课后习题答案(一到九章)

计算机组成原理课后习题答案(⼀到九章)作业解答第⼀章作业解答1.1 基本的软件系统包括哪些内容?答:基本的软件系统包括系统软件与应⽤软件两⼤类。

系统软件是⼀组保证计算机系统⾼效、正确运⾏的基础软件,通常作为系统资源提供给⽤户使⽤。

包括:操作系统、语⾔处理程序、数据库管理系统、分布式软件系统、⽹络软件系统、各种服务程序等。

1.2 计算机硬件系统由哪些基本部件组成?它们的主要功能是什么?答:计算机的硬件系统通常由输⼊设备、输出设备、运算器、存储器和控制器等五⼤部件组成。

输⼊设备的主要功能是将程序和数据以机器所能识别和接受的信息形式输⼊到计算机内。

输出设备的主要功能是将计算机处理的结果以⼈们所能接受的信息形式或其它系统所要求的信息形式输出。

存储器的主要功能是存储信息,⽤于存放程序和数据。

运算器的主要功能是对数据进⾏加⼯处理,完成算术运算和逻辑运算。

控制器的主要功能是按事先安排好的解题步骤,控制计算机各个部件有条不紊地⾃动⼯作。

1.3 冯·诺依曼计算机的基本思想是什么?什么叫存储程序⽅式?答:冯·诺依曼计算机的基本思想包含三个⽅⾯:1) 计算机由输⼊设备、输出设备、运算器、存储器和控制器五⼤部件组成。

2) 采⽤⼆进制形式表⽰数据和指令。

3) 采⽤存储程序⽅式。

存储程序是指在⽤计算机解题之前,事先编制好程序,并连同所需的数据预先存⼊主存储器中。

在解题过程(运⾏程序)中,由控制器按照事先编好并存⼊存储器中的程序⾃动地、连续地从存储器中依次取出指令并执⾏,直到获得所要求的结果为⽌。

1.4 早期计算机组织结构有什么特点?现代计算机结构为什么以存储器为中⼼?答:早期计算机组织结构的特点是:以运算器为中⼼的,其它部件都通过运算器完成信息的传递。

随着微电⼦技术的进步,⼈们将运算器和控制器两个主要功能部件合⼆为⼀,集成到⼀个芯⽚⾥构成了微处理器。

同时随着半导体存储器代替磁芯存储器,存储容量成倍地扩⼤,加上需要计算机处理、加⼯的信息量与⽇俱增,以运算器为中⼼的结构已不能满⾜计算机发展的需求,甚⾄会影响计算机的性能。

计算机组成原理第四章部分课后题答案(唐朔飞版)

计算机组成原理第四章部分课后题答案(唐朔飞版)

计算机组成原理第四章部分课后题答案(唐朔飞版)4.1 解释概念:主存、辅存、Cache、RAM、SRAM、DRAM、ROM、PROM、EPROM、EEPROM、CDROM、Flash Memory。

主存:⽤于存放数据和指令,并能由中央处理器直接随机存取,包括存储器体M、各种逻辑部件、控制电路等辅存:辅助存储器,⼜称为外部存储器(需要通过I/O系统与之交换数据)。

存储容量⼤、成本低、存取速度慢,以及可以永久地脱机保存信息。

主要包括磁表⾯存储器、软盘存储器、磁带存储设备、光盘存储设备。

Cache:⾼速缓冲存储器,⽐主存储器体积⼩但速度快,⽤于保有从主存储器得到指令的副本很可能在下⼀步为处理器所需的专⽤缓冲器。

RAM:(Random Access Memory)随机存储器。

存储单元的内容可按需随意取出或存⼊,且存取的速度与存储单元的位置⽆关的存储器。

这种存储器在断电时将丢失其存储内容,故主要⽤于存储短时间使⽤的程序。

按照存储信息的不同,随机存储器⼜分为静态随机存储器(StaticRAM,SRAM)和动态随机存储器(Dynamic RAM,DRAM)。

SRAM:(Static Random Access Memory)它是⼀种具有静⽌存取功能的内存,不需要刷新电路即能保存它内部存储的数据。

DRAM:(Dynamic Random Access Memory),即动态随机存取存储器最为常见的系统内存。

DRAM 只能将数据保持很短的时间。

为了保持数据,DRAM使⽤电容存储,所以必须隔⼀段时间刷新(refresh)⼀次,如果存储单元没有被刷新,存储的信息就会丢失。

(关机就会丢失数据)ROM:只读内存(Read-Only Memory)的简称,是⼀种只能读出事先所存数据的固态半导体存储器。

其特性是⼀旦储存资料就⽆法再将之改变或删除。

通常⽤在不需经常变更资料的电⼦或电脑系统中,资料并且不会因为电源关闭⽽消失。

PROM:(Programmable Read-Only Memory)-可编程只读存储器,也叫One-Time Programmable (OTP)ROM“⼀次可编程只读存储器”,是⼀种可以⽤程序操作的只读内存。

第4章指令系统层习题参考解答-汇编语言与计算机组成原理 答案

1.什么是“程序可见”的寄存器?程序可见寄存器是指在用户程序中用到的寄存器,它们由指令来指定。

2. 80x86微处理器的基本结构寄存器组包括那些寄存器?各有何用途?基本结构寄存器组按用途分为通用寄存器、专用寄存器和段寄存器3类。

通用寄存器存放操作数或用作地址指针;专用寄存器有EIP和EFLAGS,分别存放将要执行的下一条指令的偏移地址和条件码标志、控制标志和系统标志;段寄存器存放段基址或段选择子。

3.80x86微处理器标志寄存器中各标志位有什么意义?常用的7位:CF进位标志: 在进行算术运算时,如最高位(对字操作是第15位,对字节操作是第7位)产生进位或借位时,则CF置1;否则置0。

在移位类指令中,CF用来存放移出的代码(0或1)。

PF奇偶标志: 为机器中传送信息时可能产生的代码出错情况提供检验条件。

当操作结果的最低位字节中1的个数为偶数时置1,否则置0。

AF辅助进位标志: 在进行算术运算时,如低字节中低4位(第3位向第4位)产生进位或借位时,则AF置1;否则AF置0。

ZF零标志:如指令执行结果各位全为0时,则ZF置1;否则ZF置0。

SF符号标志:其值等于运算结果的最高位。

如果把指令执行结果看作带符号数,就是结果为负,SF置1;结果为正,SF置0。

OF溢出标志: 将参加算术运算的数看作带符号数,如运算结果超出补码表示数的范围N,即溢出时,则OF置1;否则OF置0。

DF方向标志: 用于串处理指令中控制处理信息的方向。

当DF位为1时,每次操作后使变址寄存器SI和DI减小;当DF位为0时,则使SI和DI增大,使串处理从低地址向高地址方向处理。

4.画出示意图,简述实模式下存储器寻址的过程。

20位物理地址如下计算(CPU中自动完成):10H×段基址+偏移地址=物理地址5. 画出示意图,简述保护模式下(无分页机制)存储器寻址的过程。

采用对用户程序透明的机制由选择子从描述子表中选择相应的描述子,得到欲访问段的段基址、段限等有关信息,再根据偏移地址访问目标存储单元。

《计算机组成原理》第四章总线与时序练习题及答案

《计算机组成原理》第四章总线与时序练习题及答案选择题目:1. 当M/IO 0=,RD 0=,WR=1时,CPU 完成的操作是( c )。

A. 存储器读操作B. 存储器写操作C. IO 端口读操作D. IO 端口写操作2. 8086CPU 的时钟频率为5MHz ,它的典型总线周期为( c )A. 200nsB. 400nsC. 800nsD. 1600ns3. 某微机最大可寻址的内存空间为16MB ,则其系统地址总线至少应有( D)条。

A. 32B. 16C. 20D. 244. 8086的系统总线中,地址总线和数据总线分别为( B )位。

A. 16,16B. 20,16C. 16,8D. 20,205. 8086CPU 一个总线周期可以读(或写)的字节数为( B )A. 1个B. 2个C. 1个或2个D. 4个8086有16条数据总路线,一次可以传送16位二进制,即两个字节的数6. 当8086CPU 采样到READY 引脚为低电平时,CPU 将( B )A. 执行停机指令B. 插入等待周期C. 执行空操作D. 重新发送地址7. 当8086CPU读写内存的一个对准存放的字时,BHE和A0的状态为( A )。

A. 00B. 01C. 10D. 118. 当8086CPU采样到READY引脚为低电平时,CPU将( B )A. 执行停机指令B. 插入等待周期C. 执行空操作D. 重新发送地址9. 8086CPU的字数据可以存放在偶地址,也可以存放在奇地址。

下列说法正确的是( A )A. 堆栈指针最好指向偶地址B. 堆栈指针最好指向奇地址C. 堆栈指针只能指向偶地址D. 堆栈指针只能指向奇地址10. 8086CPU在进行对外设输出操作时,控制信号M/IO和DT/R状态必须是(D )A. 0,0B. 0,1C. 1,0D. 1,111. 8086CPU复位时,各内部寄存器复位成初值。

复位后重新启动时,计算机将从内存的( c )处开始执行指令。

计算机组成原理第五版-白中英(详细)第4章习题参考答案

第4章习题参考答案1.ASCII码是7位,如果设计主存单元字长为32位,指令字长为12位,是否合理为什么答:不合理。

指令最好半字长或单字长,设16位比较合适。

一个字符的ASCII 是7位,如果设计主存单元字长为32位,则一个单元可以放四个字符,这也是可以的,只是在存取单个字符时,要多花些时间而已,不过,一条指令至少占一个单元,但只占一个单元的12位,而另20位就浪费了,这样看来就不合理,因为通常单字长指令很多,浪费也就很大了。

2.假设某计算机指令长度为32位,具有双操作数、单操作数、无操作数三类指令形式,指令系统共有70条指令,请设计满足要求的指令格式。

答:字长32位,指令系统共有70条指令,所以其操作码至少需要7位。

双操作数指令单操作数指令无操作数指令3.指令格式结构如下所示,试分析指令格式及寻址方式特点。

15 10 !9 8 7 4 3 0答:该指令格式及寻址方式特点如下:(1) 单字长二地址指令。

》(2) 操作码字段OP可以指定26=64种操作。

(3) 源和目标都是通用寄存器(可分指向16个寄存器)所以是RR型指令,即两个操作数均在寄存器中。

(4) 这种指令结构常用于RR之间的数据传送及算术逻辑运算类指令。

4.指令格式结构如下所示,试分析指令格式及寻址方式特点。

15 10 9 8 7 4 3 015 10 9 8 7 4 3 0答:该指令格式及寻址方式特点如下:(1)双字长二地址指令,用于访问存储器。

(2)操作码字段OP可以指定26=64种操作。

(3)RS型指令,一个操作数在通用寄存器(选择16个之一),另一个操作数在主存中。

有效地址可通过变址寻址求得,即有效地址等于变址寄存器(选择16个之一)内容加上位移量。

|5.指令格式结构如下所示,试分析指令格式及寻址方式特点。

15 12 11 9 8 6 5 3 2 0答:该指令格式及寻址方式特点如下:(1)该指令为单字长双操作数指令,源操作数和目的操作数均由寻址方式和寄存器构成,寄存器均有8个,寻址方式均有8种。

微型计算机原理与接口技第四章习题参考答案

第四章习题参考答案教材上的习题P205 1 解:A1 - 4字节,A2 - 6字节,A3 - 40字节,A4 - 60字节P205 4 解:PAR偏移地址为0, PLENTH 当前偏移地址$=2+16+4=22,$-PAR=22,故PLENTH的值为22P205 5 解:AX=1,BX=20,CX=1P206 6 解: 应讨论最高位为1和0的情况。

如输入最高位为1,AH=0;输入最高位为0,AH=0FFH。

IN AL,5FH ;假如输入后AL=45HTEST AL,80H ;执行01000101 AND 10000000后ZF=1,AL=00HJZ L1 ;ZF=1,转到L1MOV AH,0JMP STOPL1: MOV AH,0FFH ;结果AH=0FFHSTOP: HALT补充题阅读程序并完成填空(1) ADDR1开始的单元中连续存放两个双字数据,求其和,并将和存放在ADDR2开始的单元(假定和不超过双字)MOV CX,2XOR BX,BXCLCNEXT: MOV AX,[ADDR1+BX]ADC AX,MOV [ADDR2+BX],AXINC BXNEXT解:[ADDR1+BX+4]INC BXLOOP(2)在数据段ADDR1地址处有200个字节数据,要传送到数据段地址ADDR2处。

MOV AX, SEG ADDR1MOV DS, AXMOV ES,MOV SI,MOV DI, OFFSET ADDR2MOV ,200CLDREP解:AXOFFSET ADDR1CXMOVSB(3)已知有某字串BUF1的首地址为2000H, 数据段与附加段重合。

欲从BUF1处开始将20个字数据顺序传送至BUF2处。

(假设BUF1和BUF2有地址重叠)LEA SI, BUF1ADD SI,LEA DI, BUF2STDMOV CX,REP MOVSW解:38ADD DI, 3820(4)设有一个首地址为ARRAY,有N个字数据的数组,要求求出该数组之和,并把结果存入TOTAL地址中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档