微机原理作业与参考答案_第1页
微机原理作业与参考答案_第2页
微机原理作业与参考答案_第3页
微机原理作业与参考答案_第4页
微机原理作业与参考答案_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、第一章 计算机基础 (P32)1-3 写出下列机器数的真值:(1)01101110(2)10001101(3)01011001(4)11001110答案:(1)+110(2)-13( 原码) -114 (反码) -115 (补码)(3)+89(4)-78(原码) -49 (反码) -50(补码)1-4 写出下列二进制数的原码、反码和补码(设字长为 8 位):(1)+010111(2)+101011(3)-101000(4)-111111答案:(1)x 原 =00010111x反 = 00010111x 补 = 00010111(2)x 原 =00101011x反 = 00101011x 补 =

2、 00101011(3)x 原 =10101000x反 = 11010111x 补 = 11011000(4)x 原 =10111111x反= 11000000x 补 =110000011-5 当下列各二进制数分别代表原码, 反码,和补码时, 其等效的十进制数值为 多少?1)00001110 表示原码 14, 反码 14,表示补码为 142)11111111 表示原码 127, 反码 0,表示补码为 13)10000000 表示原码 -0 , 反码-127 ,表示补码为 1284)10000001 表示原码 1, 反码 126,表示补码为 127 1-6 已知 x1=+0010100,y1=+

3、0100001,x2=-0010100 ,y2=-0100001,试计算下 列各式。(字长 8 位)(1)x1+y1 补( 2) x1-y2 补( 3) x2-y2 补(4)x2+y2 补(5)x1+2*y2 补( 6) x2+y2/8 补答案:(1)x1+y1 补 =00010100+00100001补=00110101 补=00110101(2)x1-y2 补 =x1 补+-y2 补=00010100+00100001=00110101(3)x2-y2 补 =x2 补+-y2 补=11101100+00100001=00001101(4)x2+y2 补 =x2 补+y2 补=1110110

4、0+11011111=11001011 ( 5) x1+2*y2 补=x1 补+2*y2 补=00010100+10111110=11010010 ( 6) x2+y2/8 补=11101100+y2/8 补 =11101100+11111100=111010001-7 用补码来完成下列运算,并判断有无溢出产生(字长为 8 位): ( 1) 85+60(2)-85+60( 3) 85-60(4)-85-60答案:( 1) x 补+y 补=01010101+00111100=10010001 = -111,有溢出2)x 补+y 补=10101011+00111100=11100111 =-25,

5、无溢出3)x 补+y 补= 01010101+11000100=00011001 =25,无溢出, 并判断有无溢4)x 补+y 补=10101011+11000100=01101111 =111,有溢出 1-8 在微型计算机中存放的两个补码数,试用补码加法完成计算 出产生。( 1) x 补+y 补=01001010+01100001=10101011 有溢出( 2) x 补-y 补=011010 = 01101100+10101010=00010110 无溢出注: X 补Y 补=X 补Y补 Y 补的算法:将 Y 补连同符号位一起按位取反加 11-9 试将下列各数转换成 BCD码:( 1)(30

6、)10(2)(127)10( 3) 00100010B(4)74H答案:(1)(30)10 = (0011 0000 )BCD( 2)(127) 10 = (0001 0010 0111 ) BCD( 3) 00100010B = 34 = (0011 0100 )BCD(4)74H = (116)10 = (0001 0001 0110 )BCD1-10 下列各数代表什么 ASCII 字符:( 1) 41H(2) 72H(3) 65H(4) 20H答案:(1)41H =(0100 0001 )2,代表字符 A。(2) 72H = (0111 0010)2,代表字符 r。(3) 65H = (

7、0110 0101)2,代表字符 e。(4) 20H = (32)10 = (0010 0000)2,代表 SP。1-11 写出下列字符的 ASCII 码:9,*,=,!,$答案:9 0011 1001*0010 1010=0011 1101! 0010 0001$0010 00011-21 试用示意图说明存储器的结构和读、写操作 参考课本 P22第二章 80X86/Pentium 微处理器 (P90)2-3 在执行指令期间, EU能直接访问存储器吗?为什么? 答:不能,因为 CPU由 EU和 BIU组成,在指令执行期间, EU负责到 BIU 指令队 列去取指令,执行指令,如果需要从存储器取数

8、据,由 BIU 负责总线操作。2-7 8086/8088 有几位状态位?有几位控制位?其含义分别是什么?答: 8086/8088 有 6位状态位, 3位控制位。状态位: CF进位标志; PF 奇偶标志; AF 辅助进位标志; ZF 零标志; SF 符号标 志, OF溢出标志。控制位: IF 允许中断标志; DF方向标志; TF 陷阱标志2-9 简述 A0与/BHE在 8086系统中的作用。答:8086有 16根数据线,可以在一个总线读写周期中, 读写一个字数据。 8086CPU 配置的存分为奇地址和偶地址存储体。 如果要读写一个字数据, 需要分别从奇地 址和偶地址存储体读写一个字节数据。由 A

9、0=0 选通偶地址存储体,一个字节数 据送到低八位数据线 D0D7;由/BHE=0选通奇地址存储体, 一个字节数据送到高 八位数据线 D8D15。2-19 设双字 12345678H的起始地址是 A001H,试说明这个双字在存储器中如何存 放?答:地址为 A001H、A002H、A003H、A004H的存储单元分别存放: 78H、56H、34H、 12H。存放原则:低地址存放低位数据,依次存放在连续的存储单元中。2-20 已知堆栈段寄存器 SS=A000H,堆栈指示器 SP=0100H,试将数据 1234ABCDH 推入堆栈,画出进栈示意图。最后栈顶 SP=?答: SP=00FCH物理地址 0

10、A00FCH-0A00FFH的容依次为 CD,AB,34,12.注: SP:堆栈栈顶指示器, 16位寄存器,存放栈顶的偏移地址。2-21 试求出下列运算后的各个状态标志,并说明进位标志和溢出标志的区别 (1)1278H+3469H(2)54E3H-27A0H(3)3881H+3597H(4)01E3H-01E3H解:(1)0001 0010 0111 1000+ 0011 0100 0110 10010100 0110 1110 0001CF=0 PF=1 AF=1 ZF=0 SF=0 OF=0(2)0101 0100 1110 0011+ 1101 1000 0110 00001 0010

11、1101 0100 0011CF=0 PF=0 AF=0 ZF=0 SF=0 OF=03)0011 1000 1000 0001+ 0011 0101 1001 01110110 1110 0001 1000CF=0 PF=1 AF=0 ZF=0 SF=0 OF=04)0000 0001 1110 0011+ 1111 1110 0001 11011 0000 0000 0000 0000CF=0 PF=1 AF=0 ZF=1 SF=0 OF=0注:16 位操作数的最低二进制位: b0、最高二进制位: b15AF :看 b3 是否向 b4 有进(借)位:辅助进借位2-24 什么是时钟周期,机器

12、周期,总线周期,什么是指令周期? 参考课本 P55。第三章 80X86/Pentium 指令系统( P135)3- 5 寻址方式:要注意题目要源操作数还是目的操作数。(1)MOV SI,2100H(3)MOV SI,AX(5)AND AX,DX(7)MOV AX,ES:BX(9)MOV BP,CX(2) MOV CX,DISPBX(4)ADC AX,BXSI(6)MOV AX,BX+10H(8)MOV AX,BX+SI+20H (10)PUSH DS参见课本容,掌握寻址方式和 EA、 PA的计算。 地址表达式:标号 /变量 /常量 +基址寄存器 +变址寄存器 地址表达式 :存储器操作数,以地址

13、表达式的值为偏移地址 如下:是否正确?MOVMOVMOVMOVAX, SIDIAX, BXBPAX, ELEMS+CXAX,ELEMS+100 SIMOV BX, AX3-8 (1)AX=3355H, SP=1FFFEH(2) AX=3355H, DX=4466H, SP=1FFFEH3-12 (3)BX=0056H, AX=1E40H(4)SI=00F6H, SI=0024H (5)AX=5678H, 09226H=1234H3-14 (1) MOV AX,0XOR AX,AX(2)MOV CL,4ROR BL,CL(3) 假设 N1、N2、 M1、M2都为字节变量,则MOV AX,N1CW

14、DIDIV N2MOV M1,ALMOV M2,AH(4) AND BX,01111b(5) XOR AX 4020H(6) TEST DX,00001bJZ ZERO;ZF=1说明 bo、b9 全为 0TEST DX,00001bJZ B0ZERO; ZF=1 说明 bo 为 0TEST DX,00000bJZ B9ZERO; ZF=1 说明 b9 为 0; bo 、b9 全为 1ZERO: B0ZERO:B9ZERO:(7) OR CX,13-17NUM1 DW 4148H,2816HNUM2 DW 2258H,8452H(1) MOV AX,NUM2ADD NUM1,AXMOV AX,N

15、UM2+2ADD NUM1+2,AX(2) RES DB 2DUP(?)MOV AL,BYTE PTR NUM1ADD AL,BYTE PTR NUM1+1ADD AL,BYTE PTR NUM1+2ADD AL,BYTE PTR NUM1+3MOV RES,AL(3) 假设存放的数据为无符号数MOV SI,OFFSET NUM1XOR AX,AXMOV CX,8LP:ADD AL,SIADC AH,0INC SILOOP LPMOV RES,ALMOV RES+1,AH 假设存放的数据为带符号数MOV SI,OFFSET NUM1XOR BX,BXMOV CX,8LP:MOV AL,SICB

16、WADD BX,AXINC SILOOP LPMOV RES,ALMOV RES+1,AH(4) MOV AX,NUM1ADD NUM2,AXMOV AX,NUM1+2ADC NUM2+2,AX3-18(1)XOR AX, AX ;AX 清零LEA SI, NUM1MOV CX, 8LOP: ADD AL, SIDAAADC AH, 0 ;AF 清零INC SILOOP LOPMOV RES, ALMOV RES+1, AH(2) MOV AL, NUM1SUB AL, NUM2DASMOV RES, AL差 90H; CF=13-21(1)BX=9AH (2)BX=61H (3)BX=807

17、1H (4)BX=10F7H (5)BX=0FF1CH3-23(1) 将自 FIRST 开始的存储区中的连续 10 个字节传送到从 SECOND开始的存储区中。 (2) 将自 0404H开始的存储区中连续 256 个字节全部赋 0值。3-27(3)IP=2450H(1)IP=1256H (2)IP=3280H3-28CS=2000H;IP=009AH;SP=0F178H; SP=8FHSP+1=3DH;SP+2=50H;SP+3=40H;3-29MOV BL,ALCMP AL,01HJZ LAB1CMP AL,02HJZ LAB2CMP AL,04HJZ LAB3AND BL,07HJNZ O

18、KOK: LAB1: LAB2: LAB3: 3-31MOV AX,0032HCMP AX,XJL N_HIGHMOV BX,XSUB BX,YJO OVERFLOWJNS NEXTNEG BXNEXT: MOV RESULT,BX汇编语言程序设计( P195)N_HIGH: OVERFLOW: 第四章4- 2 存分配和预置数据VAR1 DB 12,-12H,3 DUP(0,0FFH)VAR2 DB 100 DUP(0,2 DUP(1,2),0,3)VAR3 DB WELCOME TOVAR4 DW VAR3+6;存放的是偏移地址VAR5 DD VAR3;存放的是偏移地址、段地址4-3(1)D

19、ATA1 DB 86H,27H,23H,00H,24H,1AH(2)DATA2 DW 0B430H,1062H(3)DATA3 DB 4DUP(20H),20,0,6DUP(1,2)4-5(1)VAR1 的偏移量是 0030H;VAR2的偏移量是 003AH (2)CNT=0010H(3) VAR2+2 单元的容是 02H4-11DATA SEGMENTXDB4 DUP(?)YDB4 DUP(?)ZDB4 DUP(?); 定义 X,Y,Z 为字节变量DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV

20、 DL,0MOV AX,WORD PTR XSUB AX,WORD PTR Y ;X,Y 低 16 位相减MOV WORD PTR Z,AX ; 结果存入 Z 的低 16 位MOV AX,WORD PTR X2SBB AX,WORD PTR Y2 ;X,Y 高 16 位相加MOV WORD PTR Z2,AX ; 结果存入 Z 的高 16 位JNO OKMOV DL,-1 ; 溢出OK: MOV AH,4CHINT 21HCODE ENDSEND START4-13CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV

21、GOOD,0MOV PASS,0MOV BAD,0XOR BX,BX; bx 存放全年级统计总成绩XOR SI,SIMOV CX,100LP: MOV AH,BUFSICMP AH,85HJAGSCMP AH,60HJAEPSMOV AL,BADADD AL,1DAAMOV BAD,ALJMP AGAINGS: MOV AL,GOODADD AL,1DAAMOV GOOD,ALJMP AGAINPS: MOV AL,PASSADD AL,1DAAMOV PASS,ALAGAIN: MOV AL,BLADD AL,AHDAAMOV BL,ALMOV AL,BHADC AL,0DAAMOV BH,

22、ALINC SILOOP LPMOV AVRG,BHMOV AH,4CHINT 21HCODE ENDSEND START4-15DATASEGMENTFIRSTDB .$; 定义字符串COUNTEQU 100; 定义字符串长度RESULTDW ?; 定义存放结果单元DATA ENDSSTACK SEGMENT PARA STACK STACKDB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV BX,OFFSET FIRST ; 建立数据指针MOV CX,COUNT; 设

23、置循环次数MOV DX,0; 清零计数器LP: CMP BYTE PTR BX,AJNZ NEXT ;非A 则转到 NEXTINC DX ;是A 则计数器 DX加 1NEXT: INC BX;调整数据指针LOOP LP;循环 100 次MOV RESULT,DX ; 结果存入 RESULTMOV AH,4CHINT 21HCODE ENDSEND START4-17DATASEGMENTDATA_WDW X1,X2, COUNTEQU ($-DATA_W)/2COUT1DW 0COUT2DW 0COUT3DW 0DATAENDSSTACKSEGMENT PARA STACK STACKDB10

24、0 DUP(?)STACKENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV BX,OFFSET DATA_W 建; 立数据指针MOV CX,COUNT ; 设置循环次数 LP: CMP WORD PTR BX,0JGE NEXTINC COUT2JMP AGAINNEXT: JG NEXT2INCCOUT3JMPAGAINNEXT2: INCCOUT1AGAIN:INCBXINC BXLOOP LPMOV AH,4CHINT 21H CODE ENDS调整数据指针循环 100 次END START4-18DA

25、TAESGMENTARRAYDB D1,D2,.,DN; 定义字节数组COUNTEQU $-ARRAY ; 字节数组长度赋予符号名 COUNTMAX DB?MIN DB?DATAENDSSTACKSEGMENT PARA STACK STACKDB100 DUP(?)STACKENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV BX,OFFSET ARRAY建 ; 立数据指针MOV CX,COUNT-1 ; 设置循环次数MOV AL,BXMOV MAX,AL;MAX 赋予初值为ARRAY的第一个数据MOV MI

26、N,AL;MIN 赋予初值为ARRAY的第一个数据LP: INC BX;调整数据指针MOV AL,BX;取数据CMP AL,MIN; 与 MIN 进行比较JNB BIG;比 MIN大则跳转 BIG判断是否最大值MOV MIN,AL; 小于或等于 MIN则给MIN 重新赋值JMP NEXT; 比较下一个数据BIG: CMP AL,MAX; 与 MAX进行比较JNA NEXT; 比 MAX小则比较下一个数据MOV MAX,AL; 大于或等于 MAX则给MAX重新赋值NEXT: LOOP LPMOV AH,4CHINT 21HCODE ENDSEND START4- 19MOV AX,DATAMOV

27、 DS,AXMOV AL,0 ; AL存放绝对值最大的数MOV SI,0 ;SI 作为指针MOV CX,256LP: CMP BLOCKSI,0JGE NEXTNEG BLOCKSI ; 负数取相反数NEXT:CMP AL,BLOCKSIJAE NEXT2MOV AL,BLOCKSINEXT2:INC SILOOP LPMOV MAX,AL 4-23MOV CH,0MOV SI,0LP: CMP STRINGSI,0DHJZ OVERINC CHINC SIJMP LPOVER: 4-32STACK SEGMENT PARA STACK STACKDB 100 DUP(?) STACK END

28、SDATA SEGMENT STR1 DB 8 DUP(0) 别保存十万个位,下同 STR2 DB 8 DUP(0) SUM DB 8 DUP(0) BCD1 DB 3 DUP(0) 分别保存十万个位,下同 BCD2 DB 3 DUP(0) BCDSUM DB 4 DUP(0); 存储输入的 6 位十进制数 ASCII 码, STR12STR17 ,分; 存储结果的 ASCII 码; 存储输入的 6位十进制数的压缩 BCD码,BCD12BCD10 ,; 存储结果的 BCD码MESG1 DB PLEASE INPUT THE FIRST NUMBER : $MESG2 DB PLEASE INP

29、UT THE SECOND NUMBER : $MESG3 DB THE SUM IS : $DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAHCHH PROC FAR MOV AH,02H MOV DL,0DH INT 21H MOV DL,0AH INT 21H RETHCHH ENDPGETSTR PROC FAR MOV AH,0AH INT 21H RETGETSTR ENDPASCTOBCD PROC FAR MOV CX,3NEXT1: MOV AL,SI SUB AL,30H PUSH CX MOV CL,4 SHL AL,CL POP C

30、X MOV DI,AL INC SI MOV AL,SI SUB AL,30H ADD DI,AL DEC DI INC SI LOOP NEXT1 RETASCTOBCD ENDP; 回车换行子函数子程序; 从键盘输入字符串子程序; 调用 10(0AH) 号 DOS中断,从键盘输入字符串;ASCII 转 BCD码子程序, SI 指向 ASCII 串, DI 指向BCD串BCDADD PROC FAR 果MOV CX,3NEXT2: MOV AL,SIMOV AH,DI ADC AL,AH DAA; 两个 BCD码相加子程序, SI 和 DI 指向两个被加数,BX指向结MOV BX,ALINC

31、 SIINC DIINC BXLOOP NEXT2; 如果结果有第 7 位,则将这位写入结果中JNC NEXT3MOV BCDSUM3,1 NEXT3: RET BCDADD ENDPBCDTOASC PROC FAR 串MOV CX,3CMP BCDSUM3,1 JNE NEXT4MOV SUM0,31HNEXT4: MOV AL,SI AND AL,0F0H PUSH CX MOV CL,4 SHR AL,CLPOP CX;BCD 码转 ASCII 码子程序, SI 指向 BCDASCII串,DI 指向 ASCII; 如果结果有第 7 位,则将这位转变为 ASCII 码; 转变剩下的 6

32、位;9 号 DOS中断的要求,被显示串要以 $ 结尾ADD AL,30H MOV DI,AL INC DI MOV AL,SI AND AL,0FH ADD AL,30H MOV DI,AL INC DI DEC SI LOOP NEXT4 MOV SUM7,24H RET BCDTOASC ENDPDISP PROC FARLEA DX,SUMMOV AH,09HINT 21HRETDISP ENDP; 显示字符串子程序; 调用 9 号 DOS中断,显示字符串START: MOV AX,DATA;显示 PLEASE INPUT THE FIRST NUMBER : ; 从键盘输入字符串 ,

33、即 6 位十进制数MOV DS,AXMOV DX,OFFSET MESG1MOV AH,09HINT 21HLEA DX,STR1MOV STR10,7CALL GETSTRCALL HCHHLEA SI,STR12LEA DI,BCD12CALL ASCTOBCD;ASCII 转 BCD码MOV DX,OFFSET MESG2;显示 PLEASE INPUT THE FIRST NUMBER : MOV AH,09HINT 21H LEA DX,STR2 MOV STR20,7 CALL GETSTR CALL HCHH LEA SI,STR22 LEA DI,BCD22 CALL ASCT

34、OBCD LEA SI,BCD1 LEA DI,BCD2 LEA BX,BCDSUM CALL BCDADD LEA SI,BCDSUM2 LEA DI,SUM1 CALL BCDTOASC; 从键盘输入字符串 , 即 6 位十进制数;ASCII 转 BCD码; 两个 BCD码相加MOV DX,OFFSET MESG3; 显示结果字符串MOV AH,09H INT 21H CALL HCHH CALL DISPMOV AH,4CH INT 21HCODE ENDSEND START第五章 半导体存储器( P221)5- 5所占地址空间: 20000H 27FFFH5- 61#: 8000H-87FFH2#: 8800H-8FFFH3#: 9000H-97FFH4#: 0A000H-0A3FFH5#: 0A400H-0A7FFH6#: 0A800H-0ABFFH7#: 0AC00H-0AFFFH5-7 用 24 译码器来产生 4片的片选信号,各片的地址分别是:0 80000H 807FFH180800H 80FFFH281000H 817FFH38

温馨提示

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

评论

0/150

提交评论