版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 . . 61/61微机原理与应用(继红、徐晨)课后习题答案 第三章 8086/8088指令系统和寻址方式习题答案(部分) 3.1 总结计算机中十进制、二进制、八进制与十六进制数的书写形式。 123D、0AFH、 77Q、1001110B分别表示什么计数制的数?答案:123D、0AFH、77Q、1001110B分别表示十进制、十六进制、八进制、二进制。 3.2字长为 8位、16位二进制数的原码、补码表示的最大数和最小数分别是什么?答案:8位原码表示的最大数:(27-1)、8位补码表示的最大数:(27-1)、8位原码表示的最小数:-(27-1)、8位补码表示的最小数 -27。 16位原码表示的最
2、大数:(215-1)、16位补码表示的最大数:(215-1)、16位原码表示的最小数:-(215-1)、16位补码表示的最小数 -215。 3.3 把下列十进制数分别转换为二进制数和十六进制数。 (1)125 (2)255 (3)72 (4)5090 答案:(1) 125二进制数: 0111 1101B;十六进制数: 7DH。 (2)255二进制数: 1111 1111B;十六进制数:0FFH。 (3)72二进制数: 0100 1000B;十六进制数: 48H。 (4)5090二进制数: 0001 0011 1110 0010B;十六进制数: 13E2H。 3.4 把下列无符号二进制数分别转换
3、为十进制数和十六进制数。 (1)1111 0000 (2)1000 0000 (3)1111 1111 (4)0101 0101 答案:(1)1111 0000十进制数: 240D;十六进制数: 0F0H。 (2)1000 0000十进制数: 128D;十六进制数: 80H。 (3)1111 1111十进制数:255D;十六进制数: 0FFH。 (4)0101 0101十进制数: 85D;十六进制数: 55H。 3.5 把下列无符号十六进制数分别转换为十进制数和二进制数。 (1)FF (2)ABCD (3)123 (4)FFFF答案:(1)FF十进制数:255D;二进制数; 1111 1111
4、B。 (2)ABCD十进制数: 43981D;二进制数; 1010 1011 1100 1101B。 (3)123十进制数: 291D;二进制数; 0001 0010 0011B。 (4)FFFF十进制数:65535D;二进制数; 1111 1111 1111 1111B。 3.6 分别用 8位二进制数和 16位二进制数写出下列十进制数的原码和补码。 (1)16 (2)-16 (3)+0 (4)-0 (5)127 (6)-128 (7)121 (8)-9 答案: (1)16 8位二进制数原码 :0001 0000 补码:0001 0000;16位二进制数原码 :0000 0000 0001 0
5、000 补码: 0000 0000 0001 0000。 (2)-16 8位二进制数原码 :1001 0000 补码 :1111 0000;16位二进制数原码 :1000 0000 0001 0000 补码:1111 1111 1111 0000。 (3)+0 8位二进制数原码 :0000 0000 补码:0000 0000;16位二进制数原码 :0000 0000 0000 0000 补码:0000 0000 0000 0000。 (4)-0 8位二进制数原码 :1000 0000 补码:0000 0000;16位二进制数原码 :1000 0000 0000 0000 补码: 0000 00
6、00 0000 0000。 (5)127 8位二进制数原码 :0111 1111 补码: 0111 1111;16位二进制数原码 :0000 0000 0111 1111 补码: 0000 0000 0111 1111。 (6)-128 8位二进制数原码:无补码: 1000 0000 ;16位二进制数原码:1000 0000 1000 0000 补码:1111 1111 1000 0000。 (7)121 8位二进制数原码 :0111 1001 补码 : 0111 1001;16位二进制数原码 :0000 0000 0111 1001 补码: 0000 0000 0111 1001。 (8)-
7、9 8位二进制数原码 :1000 1001 补码:1111 0111;16位二进制数原码 :1000 0000 1000 1001 补码:1111 1111 1111 0111。 3.7 试实现下列转换。 (1)原10111110B,求补 (2)补11110011B,求-补 (3)补10111110B,求原 (4)补10111110B,求反1 微机原理与应用(继红、徐晨)课后习题答案 答案:(1) 1100 0010 (2) 0000 1101 (3) 1100 0010 (4) 1011 1101 3.8 假设两个二进制数 A01101010,B10001100,试比较它们的大小。 (1)A
8、、B两数均为带符号的补码数 (2)A、B两数均为无符号数答案:(1)A、B两数均为带符号的补码数: AB (2)A、B两数均为无符号数 :AB 3.9 下列各数均为十进制数,请用 8位二进制数补码计算下列各题,用十六进制数表示其运算结果,并判断是否溢出,验证教材中所给的判断依据。 (1)90+71 (2)90-71 (3)-90-71 (4)-90+71 (5)-90-(-71) 答案:(1)90+71=161127 溢出 90补+71补=0101 1010+0100 0111=1010 0001=0A1H=-91补 (2)90-71=19127 无溢出 90补+-71补=0101 1010+
9、1011 1001=0001 0011=13H=19补 (3)-90-71=-161-128 溢出 -90补+-71补=1010 0110+1011 1001=0101 1111=5FH=95补 (4)-90+71=-19-128 无溢出 -90补+71补=1010 0110+0100 0111=1110 1101=0EDH=-19补 (5)-90-(-71)=-19-128 无溢出 -90补+71补=1010 0110+0100 0111=1110 1101=0EDH=-19补 3.10 完成下列 8位二进制数的逻辑运算。 (1)1100110010101010 (2)11001100101
10、01010 (3)1100110010101010 (4)1010110010101100 (5)1010110010101100 (6)1010110010101100 (7)10101100 答案:(1)1100110010101010=1000 1000 (2)1100110010101010=1110 1110 (3)1100110010101010=0110 0110 (4)1010110010101100=1010 1100 (5)1010110010101100=0000 0000 (6)1010110010101100=1010 1100 (7)10101100=0101 00
11、11 3.11 以下均为 2位十六进制数,试说明当把它们分别看作无符号数或字符的 ASCII码值,它们所表示的十进制数和字符是什么? (1)30H (2)39H (3)42H (4)62H (5)20H (6)7H答案:(1)30H所表示的十进制数是: 48D;字符是: 0。 (2)39H所表示的十进制数是: 57D;字符是: 9。 (3)42H所表示的十进制数是: 66D;字符是: B。 (4)62H所表示的十进制数是: 98D;字符是: b。 (5)20H所表示的十进制数是: 32D;字符是: sp空格。 (6)7H所表示的十进制数是: 7D;字符是: BEL报警。 3.12 把以下十进制
12、数分别以压缩 BCD码、非压缩 BCD码、ASCII码串表示。 (1)2 (2)78 答案:(1)2压缩 BCD码:0010、非压缩 BCD码:0000 0010、ASCII码:011 0010 (2)78压缩 BCD码:0111 1000、非压缩 BCD码:0000 0111 0000 1000、ASCII码:0110111 011100 3.13 设浮点数格式如下图所示:阶码、尾数均以补码表示,基数为 2,求: +25.6和-361.25的规格化浮点数。答案:1) +25.6D=11001.1001100110B=0.011025+5=0101B,补码 :0101,尾数: 0.0110补=
13、0.0110 规格化浮点数: 0 0000101 0 0110 2 微机原理与应用(继红、徐晨)课后习题答案 2) -361.25D=-101101001.01B=29(-0.0000) +9=1001,补码:1001,尾数: -0.0000补=1.0000 规格化浮点数:0 0001001 1 0000 3.14 设某计算机用 12位表示一个浮点数,该浮点数从高位到低位依次为:阶符 1位、阶码 3位(原码表示)、数符 1位、尾数 7位(补码表示 ),则 0 100 1 0110011的真值是多少?答案:-9.625 3.15 8086汇编语言指令的寻址方式有哪几类 ?哪种寻址方式的指令执行速
14、度最快 ?解:寻址方式分为 :立即数寻址方式、寄存器操作数寻址方式和存储器操作数寻址方式。其中,寄存器操作数寻址方式的指令执行速度最快。 3.16 在直接寻址方式中 ,一般只指出操作数的偏移地址 ,那么,段地址如何确定?如果要用某个段寄存器指出段地址 ,指令中应该如何表示 ?解:默认的数据访问 ,操作数在 DS段;堆栈操作在 SS段;串操作源操作数 (SI)在 DS段,目的操作数 (DI)在 ES段;用 BP作为指针在 SS段。如果要显式地指定段地址,则在操作数中规定段寄存器。例如: MOV AX, ES:(BX+10H) 3.17 8086系统中,设 DS=1000H,ES=2000H,SS
15、=1200H,BX=0300H,SI=0200H, BP=0100H,VAR的偏移量为 0600H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,计算它们的物理地址。(1)MOV BX,12 ;目标操作数为寄存器寻址(2)MOV BX,12 ;目标操作数为寄存器间址 PA=10300H (3)MOV ES:SI,AX ;目标操作数为寄存器间址 PA=20200H (4)MOV VAR,8 ;目标操作数为存储器直接寻址 PA=10600H(5)MOV BXSI,AX ;目标操作数为基址加变址寻址 PA=10500H (6)MOV 6BPSI,AL;目标操作数为相对的基址加变址
16、寻址 PA=12306H (7)MOV 1000H,DX ;目标操作数为存储器直接寻址 PA=11000H (8)MOV 6BX,CX ;目标操作数为寄存器相对寻址 PA=10306H (9)MOV VAR+5,AX ;目标操作数为存储器直接寻址 PA=10605H 3.18 下面这些指令中哪些是正确的?那些是错误的?如果是错误的,请说明原因。(1)XCHG CS,AX ;错,CS不能参与交换(2)MOV BX,1000 ;错,存储器之不能交换(3)XCHG BX,IP;错, IP不能参与交换(4)PUSH CS;错, CS不能为 PUSH的操作数(5)POP CS;错,不能将数据弹到 CS中
17、(6)IN BX,DX ;输入 /输出只能通过 AL/AX (7)MOV BYTEBX,1000;1000大于 255,不能装入字节单元(8)MOV CS,1000;CS不能作为目标寄存器(9)MOV BX,OFFSET VARSI ;OFFSET只能取变量的偏移地址(10)MOV AX,SIDI ;SI、DI不能成为基址加变址(11)MOV COUNTBXSI,ES:AX ;AX是寄存器,不能加段前缀 3.19 试述以下指令的区别: MOV AX,3000H 与 MOV AX,3000H 答案: MOV AX,3000H指令源操作数的寻址方式为立即寻址方式,指令执行结果为: (AX)=300
18、0H。而 MOV AX,3000H指令源操作数的寻址方式为直接寻址方式 ,指令执行结果为:DS:3000H)AX。 MOV AX,MEM 与 MOV AX,OFFSET MEM 答案: MOV AX,MEM指令源操作数的寻址方式为直接寻址方式,指令执行结果为: DS:MEM)AX。而 MOV AX,OFFSET MEM指令的执行结果是把 MEM的偏移量送 AX。 MOV AX,MEM 与 LEA AX,MEM 答案: MOV AX,MEM指令的执行结果是 LDS:MEM)AX。而 LEA AX,MEM的执行结果是把 MEM的偏移量送 AX。 (4) JMP SHORT L1 与 JMP NEA
19、R PTR L1 3 微机原理与应用(继红、徐晨)课后习题答案 答案:JMP SHORT L1为段无条件短程转移,跳转的围不得超过带符号的 8位二进制数表示的字节围; JMP NEAR PTR L1为段无条件近程转移,跳转的围不得超过带符号的 16位二进制数表示的字节围。 (5) CMP DX,CX与 SUB DX ,CX 答案:CMP DX,CX 是比较,也是利用减法比较,但是 dx中的值不变,标志寄存器改变。SUB DX ,CX 是做减法运算, dx中为减后的值,标志寄存器改变 (6)MOV BPSI,CL与 MOV DS: BPSI,CL答案:BP默认的段基址是 SS,物理地址 PA=S
20、S+BP+SI;第二个重定义为 DS段基址,物理地址 PA=DS+BP+SI 3.20 设 DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行的具体操作: MOV BYTE PTR BP, 20H MOV WORD PTR BX, 20H 解:前一条指令是把立即数 20H,传送至堆栈段 (BP的默认段 )偏移量由 BP规定的字节单元,地址为:52000H+6200H=58200H 第二条指令是把立即数 20H,传送至数据段 (BX的默认段 )偏移量由 BX规定的字单元 ,地址为:21000H+1400H = 22400H。 3.21 设当前 SS=2
21、010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执行 PUSH BX 指令后,栈顶地址和栈顶 2个字节的容分别是什么?答案:当前栈顶的地址 =2FF00H 当执行 PUSH BX 指令后,栈顶地址 =2FEFEH (2FEFEH)=57H (2FEFFH)=34H 3.22 设 DX=78C5H,CL=5,CF=1,确定下列各条指令执行后, DX和 CF中的值。(1) SHR DX,1;DX=3C62H CF=1 (2) SAR DX,CL;DX=03C6H CF=0 (3) SHL DX,CL;DX=18A0H CF=1 (4) ROR DX,CL;DX=2BC6H
22、 CF=0(5) RCL DX,CL;DX=18B7H CF=1 (6) RCR DH,1 ;DX=BCC5H CF=0 3.23 设 AX=0A69H,VALUE字变量中存放的容为 1927H,写出下列各条指令执行后寄存器和 CF、ZF、OF、SF、PF的值。 AX CF ZF OF SF PF(1)XOR AX,VALUE ; 134EH 0 0 0 0 1 (2)AND AX,VALUE ; 0821H 0 0 0 0 1 (3)SUB AX,VALUE ; F142H 1 0 0 1 1 (4)CMP AX,VALUE ; 0A69H 1 0 0 1 1 (5)NOT AX ; F59
23、6H X X X X X (6)TEST AX,VALUE ; 0A69H 0 0 0 0 1 3.24 设 AX和 BX中是符号数, CX和 DX是无符号数,请分别为下列各项确定 CMP和条件转移指令。 CX值超过 DX转移。 AX未超过 BX转移。 DX为 0转移。 CX值等于小于 DX转移。答案:(1)CMP CX,DX JA NEXT(2) CMP AX,BX JLE NEXT(3) CMP DX,0 JZ NEXT 4 微机原理与应用(继红、徐晨)课后习题答案 (4) CMP CX,DX E NEXT 3.25 阅读分析下列指令序列: ADD AX,BX JNO L1 JNC L2
24、SUB AX,BX JNC L3 JNO L4 JMP L5 若 AX和 BX的初值分别为以下 5种情况,则执行该指令序列后,程序将分别转向何处(L1L5中的一个)。 AX=13C6H, BX=80DCH AX=0B568H,BX=54B7H AX=42C8H, BX=608DH AX=0D023H,BX=9FD0H AX=9FD0H, BX=0D023H 答案:(1)转 L1:不溢出,转移到 L1处; (2)转 L1:不溢出,转移到 L1处; (3)转 L2:溢出,不转移到 L1处,进位 CF=0,转移到 L2处; (4)转 L3:溢出,不转移到 L1处,进位 CF=1,不转移到 L2处,减
25、法借位 CF=0,转移到 L3处; (5)转 L5:溢出,不转移到 L1处,进位 CF=1,不转移到 L2处,减法借位 CF=1,不转移到 L3处,不溢出 OF=0,转移到 L4处; 3.26 用普通运算指令执行 BCD码运算时 ,为什么要进行十进制调整 ?具体地讲,在进行 BCD码的加、减、乘、除运算时 ,程序段的什么位置必须加上十进制调整指令 ?解:因为 8086指令把操作数作为二进制数进行二进制运算 ,要得到正确的 BCD结果,需要进行调整。在加、减、乘法指令之后加上 BCD调整指令 ,而在除法指令之前先用 BCD调整指令再用除法指令。 3.27在编写乘除法程序时,为什么常用移位指令来代
26、替乘除法指令?编写一段程序,实现将 BX中的数除以 10,结果仍然放在 BX中。解:用移位指令时,左移 l位相当于将操作数乘 2,右移 1位相当于将操作数除 2。用移位指令实现一些简单的乘除法程序,比用乘法指令和除法指令进行乘、除运算要快得多。用除法指令实现: MOV CL 0AH MOV AX,BX IDIV CL MOV BX,AX 3.28 串操作指令使用时特别要注意和 SI,DI这两个寄存器与方向标志 DF密切相关。请具体就指令 MOVSB/MOVSW、CMPSB/CMPSW、SCASB/SCASW、LODSB/LODSW、 STOSB/STOSW列表说明和 SI、DI与 DF的关系。
27、解答: SI DI DF MOVSB/MOVSW指出源地址指出目的地址不带 REP重复前缀时, DF=0,每传送一次, SI、 DI加 1或加 2,DF=1,SI、DI则减 1或减 2 CMPSB/CMPSW存放源字符串首地址存放目的字符串首地址 DF=0,每次比较后, SI、DI加 1或加 2,CX减 1,DF=1,SI、DI减 1或减 2,CX减 1 SCASB/SCASW 无指出字符串首址偏移量无 LODSB/LODSW作为地址指针存放处理结果 DF=1时,地址作增量修改, DF=0时,地址作减量修改5 微机原理与应用(继红、徐晨)课后习题答案 STOSB/STOSW 无存放目的地址无3
28、.29 用串操作指令设计实现以下功能的程序段:首先将 100H个数从 2170H处搬到 1000H处,然后,从中检索相等于 VAL中字符的单元,并将此单元值换成空格符。解答: START:MOV AX, DS MOV ES, AX MOV SI, 2170H MOV DI, 1000H MOV CX, 100H CLD REP MOVSB ANOTHER:MOV DI, 1000H MOV AL, VAL MOV CX, 100H CLD AGE: SCASB JZ FIN DEC CX JNZ AGE JMP OVER FIN: MOV BYTE PTRDI-1,20H CMP CX,0 J
29、NZ AGE OVER: RET 3.30求双字长数 DXAX的相反数。答: NEG DX NEG AX SBB DX,0 3.31试对数据段偏移地址为 101H单元中的单字节数求补后存入 102H,最高位不变,低 7位取反存入 103H,高 4位置 1,低 4位不变,存入 104H。答: MOV AX,0101H MOV BX,AX MOV CX,AX NOT AX MOV 0102H,AX XOR BX,7FH MOV 0103H,BX AND CX,0F0H MOV 0104H 3.32 试编写一个程序,比较两个同长字符串 STRING1和 STRING2所含字符是否一样,若一样 MAT
30、CH单元赋值 1,若不一样 MATCH单元赋值 0。答案:6 微机原理与应用(继红、徐晨)课后习题答案 程序段为: ;数据定义 STRING1 DB ABCDEFGHIJK STRING2 DB ABCDFGKJMATCH DB ?;功能代码 MOV AX,SEG STRING1 MOV DS,AX MOV AX,SEG STRING2 MOV ES,AX LEA SI, STRING1 LEA DI, STRING2 MOV CX, STRING1- STRING2 CLD REPE CMPSB JZ EQUAL MOV MATCH,0 JMP OVER EQUAL:MOV MATCH,1
31、OVER:HLT ;串 1,作为源串 ;串 2,作为目标串 ;定义 MATCH单元 ;源串段地址送 DS ;目标串段地址送 ES ;源串偏移地址送 SI ;目标串偏移地址送 DI ;重复次数送 CX ;地址增 ;相等继续比较,不相等退出 ;退出时,若 ZF=1,表示两串相等 ;不一样, MATCH单元赋值 0 ;一样 MATCH单元赋值 1 3.34编写代码 ,计算 a+10b+100c+20d,其中 a、b、c、d均为单字节无符号数,结果为 16位,存入 SUM开始的两单元中。 data segment ma db 12 mb db 21 mc db 86 md db 150 SUM dw
32、0 data ends code segmentassume ds:data,cs:code start:mov ax,data mov ds,ax mov dh,0 mov dl,ma mov ah,0 mov al,10 mul mb add dx,ax mov ah,0 mov al,100 mul mc add dx,ax mov ah,07 微机原理与应用(继红、徐晨)课后习题答案 mov al,20 mul md add dx,ax mov SUM,dx code ends end start 3.35试编写一段程序把 LIST到 LIST+100中的容传到 BLK到 BLK+10
33、0中去。答案:程序段为: MOV AX,SEG LIST MOV DS,AX ;源串段地址送 DS MOV AX,SEG BLK MOV ES,AX ;目标串段地址送 ES LEA SI, LIST ;源串偏移地址送 SI LEA DI, BLK ;目标串偏移地址送 DI MOV CX, 101 ;重复次数送 CX CLD ;地址增 REP MOVSB 3.36设 CS:0100H单元有一条两字节的 JMP SHORT LAB指令,若其中的位移量为: 56H 80H 78H (4)0E0H 试写出转向目标的物理地址是多少?答:因为 CS:0100H处存放两字节指令 JMP SHORT LAB,
34、所以当执行该指令时 (IP)=0102H (1)转向目标的物理地址是: (CS)*10H+(IP)+0056H=CS:0058H (2)转向目标的物理地址是: (CS)*10H+(IP)+0FF80H=CS:0082H;80H对应的负数为 -80H(向上转移,负位移量) (3)转向目标的物理地址是: (CS)*10H+(IP)+0078H=CS:0180H (4)转向目标的物理地址是: (CS)*10H+(IP)+0FFE0H=CS:00E2H;E2H对应的负数为 -1EH(向上转移,负位移量) 3.37不使用除法指令,将堆栈段中 10H、11H单元中的双字节带符号数除以,结果存入 12H、1
35、3H单元(注:多字节数存放格式均为低位在前,高位在后)。 POP AX POP BX TEST AX,8000H ;测试被除数符号位 MOV CL,3 JZ ZS ;若为正数,跳转到 ZS SAR AX,CL JMP OVER ZS: SHR AX,CL OVER:PUSH AX 3.38数据段中 3030H起有两个 16位的带符号数,试求它们的积,存入 3034H-3036H单元中。答案:8 微机原理与应用(继红、徐晨)课后习题答案 MOV AX,3030H MOV BX,3032H IMUL BX MOV 3034H,AX MOV 3036H 3.39考虑以下调用序列:(1)MAIN调用
36、NEAR的 SUBA过程(返回的偏移地址为 150BH);(2)SUBA调用 NEAR的 SUBB过程(返回的偏移地址为 1A70H);(3)SUBB调用 FAR的 SUBC过程(返回的偏移地址为 1B50H,段地址为 1000H);(4)从 SUBC返回 SUBB;(5)从SUBB返回 SUBA;(6)从 SUBA返回 MAIN。请画出每次调用或返回时,堆栈容和堆栈指针变化情况。答: 150BH * 1A70H 150BH * 1B50H 1000H 1A70H 150BH * (SP) (SP) (SP) (1) (2) (3) 1A70H 150BH * 150BH * * (SP) (
37、SP) (SP) (4) (5) (6) 9 微机原理与应用(继红、徐晨)课后习题答案 第四章汇编语言程序设计习题答案(部分) 4.1 什么是标号?它有哪些属性?答:标号是一种特殊的标识符,它代表代码段中的某个具体位置,它主要用于表明转移的目标位置。源程序中的标号都有三种属性:段、偏移与类型。 4.2 什么是变量?它有哪些属性?答:变量名代表存储器中的一个数据区的名字。源程序中的变量有五种属性:段、偏移、类型、长度、规模。 4.3 什么是伪指令?什么是宏指令?伪指令在什么时候被执行?宏指令在程序中如何被调用?答:伪指令语句是一种不产生目标代码的语句,它仅仅在汇编过程中告诉汇编程序应如何汇编。伪
38、指令语句是在汇编程序对源程序汇编期间由汇编程序处理的操作。宏是若干语句组成的程序段,宏指令语句用来定义宏。一旦把某程序段定义成宏,则可以用宏名代替那段程序。在汇编时,要对宏进行宏展开,展开的过程是将宏名用程序段代替。 4.4 汇编语言表达式中有哪些运算符?它们所完成的运算是在什么时候进行的?答:汇编语言表达式中的运算符有:算术运算符 +、*、/、MOD 逻辑运算符 AND、OR、NOT、XOR 关系运算符 EQ、NE、LT、GT、LT、LE、GE 分析运算符SEG、OFFSET、TYPE、LENGTH、SIZE属性运算符 PTR、THIS、SHORT其它 LOW、HIGH 这些运算符都是在在汇
39、编时由汇编程序对其运算的。 4.5 画出下列语句中的数据在存储器中的存储情况。 ORG 100H VARB DB 34,34H,GOOD,2 DUP(1,2 DUP(0) )VARW DW 5678H,CD,$+2,2 DUP(100) VARC EQU 12 VARB DS:0100H 22H 34H 47H 4FH 4FH 44H 01H 00H 00H 01H 00H DS:010BH DS:0101H VARW DS:010CH DS:0102H DS:010DH DS:0103H DS:010EH DS:0104H DS:010FH DS:0105H DS:0110H DS:0106
40、H DS:0111H DS:0107H DS:0112H DS:0108H DS:0113H DS:0109H DS:0114H DS:010AH DS:0115H 00H 78H 56H 44H 43H 12H 01H 64H 00H 64H 00H 46 按下列要求,写出各数据定义语句。 DB1为 10H个重复的字节数据序列:1,2,5个 3,4。 DB2为字符串STUDENTSDB3为十六进制数序列:12H,ABCDH 用等值语句给符号 COUNT赋以 DB1数据区所占字节数,该语句写在最后。解答:10 微机原理与应用(继红、徐晨)课后习题答案 DB1 DB 16 DUP(1,2,5 D
41、UP(3),4) DB2 DB STUDENTS DB3 DW 12H,0ABCDH COUNT EQU DB2DB1 4.7 指令 OR AX,1234H OR 0FFH中两个 OR有什么差别?这两个操作数分别在什么时候执行?解答:(1)指令 OR AX,1234H OR 0FFH中的第一个 OR是指令系统中的 “或”指令,而第二个 OR是表达式中表示逻辑 “或”关系的。(2)指令 OR AX,1234H OR 0FFH中的第一个 OR是在 CPU执行指令操作时才会执行。而第二个 OR是在汇编时就会将 1234H和 0FFH作逻辑“或”运算,得到结果 12FFH。然后执行第一个 OR指令,完
42、成 AX的容与 12FFH的逻辑“或”运算。 48 对于下面的数据定义,各条 MOV指令单独执行后,有关寄存器的容是什么? PREP DB ? TABA DW 5 DUP(?) TABB DB NEXT TABC DD 12345678H (1)MOV AX,TYPE PREP;AX=1 (2)MOV AX,TYPE TABA;AX=2 (3)MOV AX,LENGTH TABA;AX=5 (4)MOV AX,SIZE TABA;AX=10 (5)MOV AX,LENGTH TABB;AX=1 (6)MOV DX,SIZE TABC;AX=4 4.9 设数据段 DSEG中符号与数据定义如下,试
43、写出数据在存中的存储示意图。 (数据段 DSEG定义略 )解答: DAB DS:0100H 2FH 47H 4FH 54H 4FH 2FH 0DH 0AH 05H 13H 61H DS:0113H DS:0101H DS:0114H DS:0102H DS:0115H DS:0103H DS:0116H DS:0104H DS:0117H DS:0105H DS:0118H DS:0106H DS:0119H DS:0107H DS:011AH DBB DS:0108H DS:011BH DS:0109H DDW DS:011CH DS:010AH DS:011DH CCB DS:010BH
44、DS:011EH DS:010CH DS:011FH DS:010DH DS:0120H DS:010EH DS:0121H DS:010FH DS:0122H DS:0110H DS:0123H DS:0111H DS:0124H DS:0112H DS:0125H 32H 31H 64H 00H 33H 03H 78H 00H 64H 00H 4.10 若自 STRING单元开始存放有一个字符串(以字符 $结束),试完成:(1)编程统计该字符串长度(不包含 $字符,并假设长度为两字节)。(2)把字符串长度放在 STRING 单元,把整个字符串往下移两个单元。11 微机原理与应用(继红、徐晨
45、)课后习题答案 程序段为:(1) MOV SI, OFFSET STRING XOR BX, BX CONT:MOV AL, SI CMP AL, $ JZ NEXT INC BX INC SI JMPCONT NEXT:MOV AH, 4CH INT 21H (2)STRING DB $COUNT EQU $-STRING MOV SI, OFFSET STRING MOV CX, COUNT ADD SI, CX CONT: DEC SI MOV AL, SI MOV SI+2, AL LOOP CONT MOV CX, COUNT MOV STRING, CX MOV AH, 4CHIN
46、T 21H 4.11 将字符串 STRING中的&字符用空格代替,字符串 STRING“It is FEB&03”。解答程序为: DATA SEGMENT STRING DB It is FEB&03 COUNT EQU $-STRING DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET STRING MOV CX,COUNT MOV AL,$CONT:CMP AL,SI JNZ NEXTMOV BYTE PTRSI,NEXT: INC SI LOOP CONT MOV
47、 AH,4CH INT 21H CODE ENDS END START 4.12 设 BLOCK起有 20个单字节的数,试将它们按降序排列。解答程序为: DATA SEGMENT ORG 0100H BLOCK DB 12H,87H,51H,68H,00H,02H,0FFH,0D6H,45H,77H,80H,9FH LEN EQU $-BLOCK 12 微机原理与应用(继红、徐晨)课后习题答案 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV BX,LEN-1 ;BX比较轮数 LOP0:
48、 MOV SI,LEN-1 ;SI第 N个数在数据表中的偏移量 MOV CX,BX ;CX比较次数计数值 MOV DX,0 ;DX置交换标志为第 N个数在数据表中偏移量LOP1: MOV AL,BLOCKSI CMP AL,BLOCKSI-1 ;比较相邻两数 JLE NEXT MOV AH,BLOCKSI-1 ;交换两数 MOV BLOCKSI-1,AL MOV BLOCKSI,AH MOV DX,1 ;DX发生交换处的位置 NEXT: DEC SI ;修改数据地址 LOOP LOP1 ;一轮比较完吗? CMP DX,0 ;本轮发生交换吗? JZ STOP ;已全部排好序 ,转程序结束 DEC
49、 BX ;所有轮都比较完否? JNZ LOP0 ;未完继续 STOP: MOV AH,4CH INT 21H CODE ENDS END START 4.14试编写一个汇编语言程序 ,要求对键盘输入的小写字母用大写字母显示出来。解答程序为: data segment message db please enter the small letter:,0ah,0dh,$ message2 db the capital letter is:,0ah,0dh,$ error db enter must be small!please enter again:,0ah,0dh,$ message3 d
50、b the capital letter is:,$ letter db ? data ends stack segment db 100h dup(?) stack ends code segment assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax jmp l1 xor ax,ax error1:lea dx,error mov ah,09h int 21h l1:lea dx,message mov ah,09h int 21h lea dx,letter mov ah,01h int 21h push ax 13 微
51、机原理与应用(继红、徐晨)课后习题答案 mov dl,0ah mov ah,02h int 21h mov dl,0dh int 21h lea dx,message3 mov ah,09h int 21h pop ax cmp al,z ;比较,判断是否小写字母ja error1 cmp al,a error1 ;大写字母重新输入 sub al,20H ;减 20H转换为大写字母 mov dl,al mov ah,02h int 21h mov ax,4c00h int 21h code ends end start 415 键盘输入十个学生的成绩,试编制一个程序统计 6969分, 7079
52、分, 8089分, 9099分与 100分的人数,分别存放到 S6,S7,S8,S9与 S10单元中。解答程序为: DATA SEGMENT BUF DB 10 DUP(?) S6 DB ? S7 DB ? S8 DB ? S9 DB ? S10 DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET S6 XOR AL,AL MOV CX,0504H CONT: MOV SI,AL INC SI LOOP CONT MOV CX,10 MOV SI,OFFSET
53、 BUF CONT1: MOV AH,1 INT 21H SHL AL,CL MOV BL,AL MOV AH,1 INT 21H SUB AL,30H OR AL,BL MOV SI,AL CMP AL,70H JAE NEXT1 INC BYTE PTR S6 14 微机原理与应用(继红、徐晨)课后习题答案 NEXT1: CMP AL,80H JAE NEXT2 INC BYTE PTR S7 NEXT2: CMP AL,90H JAE NEXT3 INC BYTE PTR S8 NEXT3: CMP AL,99H JA NEXT4 INC BYTE PTR S9 JMP NEXT5 NE
54、XT4: INC BYTE PTR S10 NEXT5: INC SI LOOP CONT1 MOV AH,4CH INT 21H CODE ENDS END START 4.17 在有序表“11,22,33,44,55,66,77,88,99,00”中查找 44。若找到置 find为其在表中的位置;未找到,find置0。 4.18 分别实现满足下面要求的宏定义:(1)可对任一寄存器实现任意次数的左移操作。 (2)任意两个单元中的数据相加存入第三个单元中。 (3)将任意一个8位寄存器中的压缩BCD码转为两个ASCIII码,并在屏幕上显示。(2)宏定义的代码段如下: ADDM MACRO M1,
55、M2,M3 MOV AX,M1 ADD AX,M2 MOV M3,AX ENDM 15 微机原理与应用(继红、徐晨)课后习题答案 第五章 8086系统时序和微机总线习题答案(部分) 5.1 什么是时钟周期、总线周期、指令周期?答:8086CPU执行一条指令是由取指令、译码和执行等操作组成的,为了使 8086CPU的各种操作协调同步进行,8086CPU必须在时钟信号 CLK 控制下工作,时钟信号是一个周期性的脉冲信号,一个时钟脉冲的时间长度称为一个时钟周期 (Clock Cycle),是时钟频率(主频)的倒数,时钟周期是计算机系统中的时间基准。 8086CPU要通过总线才能与外部交换信息, CP
56、U通过总线接口单元与外部交换一次信息,称为一次总线操作,所耗用的时间称为一个总线周期 (Bus Cycle),也称机器周期(Machine Cycle)。一个总线周期由若干个时钟周期组成,总线操作的类型不同,总线周期也不同。一个总线周期完成的数据传输,一般有传送地址和传送数据两个过程。 8086CPU执行一条指令所需要的时间称为指令周期( Instruction Cycle),一个指令周期由若干个总线周期组成, 5.2 8086微处理器各个 T状态的主要功能。答:(1)在 T1状态,CPU往多路复用总线上发出地址信息,以指出要寻址的存储单元或外设端口的地址。 (2)在 T2状态,CPU从总线上
57、撤消地址,而使总线的低 16位浮空,置成高阻状态,为传输数据作准备。总线的最高 4位( A1916)用来输出本总线周期状态信息。在这些状态信息用来表示中断允许状态,当前正在使用的段寄存器名等。 (3)在 T3状态,多路总线的高 4位继续提供状态信息,而多路总线的低 16位( 8088则为低 8位)上出现由 CPU写出的数据或者 CPU从存储器或端口读入的数据。 (4)在有些情况下,外设或存储器速度较慢,不能与时地配合 CPU传送数据。这时,外设或存储器会通过 “READY”信号线在 T3状态启动之前向 CPU发一个“数据未准备好 ”信号,于是 CPU会在 T3之后插入 1个或多个附加的时钟周期
58、 Tw。Tw也叫等待状态,在 Tw状态,总线上的信息情况和 T3状态的信息情况一样。当指定的存储器或外设完成数据传送时,便在“READY”线上发出 “准备好”信号,CPU接收到这一信号后,会自动脱离 Tw状态而进入 T4状态。 (5)在 T4状态,总线周期结束。 5.3 8086和 8088有何区别?答:这两种 CPU的主要区别如下:外部数据总线位数: 8086 CPU的外部数据总线有 16位,在一个总线周期可输入 /输出一个字( 16位数据),使系统处理数据和对中断响应的速度得以加快;而 8088 CPU的外部数据总线为 8位,在一个总线周期只能输入 /输出一个字节( 8位数据)。指令队列容
59、量: 8086 CPU的指令队列可容纳 6个字节,且在每个总线周期中从存储器中取出 2个字节的指令代码填入指令队列,这可提高取指操作和其它操作的并行率,从而提高系统工作速度;而 8088 CPU的指令队列只能容纳 4个字节,且在每个总线周期中能取一个字节的指令代码,从而增长了总线取指令的时间,在一定条件下可能影响取指令操作和其它操作的并行率。引脚特性:两种 CPU的引脚功能是一样的,但有以下几点不同: 1) AD15AD0的定义不同:在 8086中都定义为地址 /数据复用总线;而 8088中,由于只需 8条数据总线,因此,对应于 8086的 AD15AD8这 8条引脚定义为 A15A8,只作地
60、址线使用。 2) 34脚的定义不同:在 8086中定义为 BHE信号;而在 8088中定义为 SSO,它与 DT /R , IO /M 一起用作最小方式下的周期状态信号。 3) 28脚的相位不同,在 8086中为 M /IO ;而在 8088中被倒相,改为 IO / M,以便与 8080/8085系统的总线结构兼容。 5.4 8086是怎样解决地址线和数据线的复用问题的? ALE的作用是什么?答:(1)、AD15-AD0采用分时的多路转换方法来实现对地址线和数据线的复用。在总16 微机原理与应用(继红、徐晨)课后习题答案 线周期 T1状态下,这些引线表示为低 16位地址线,在总线周期为 T2、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 景区人员绩效考核制度
- 朗桑教育培训中心制度
- 机关工作绩效考核制度
- 材料项目审计制度
- 村级干部教育培训制度
- 林业局经责审计公告制度
- 校外教育审计制度汇编
- 残联内部审计工作制度范本
- 民生工程项目审计制度
- 水厂反恐教育培训制度
- 2025中远海运财产保险自保有限公司高级管理人员招聘笔试历年典型考点题库附带答案详解
- 2025天津师范大学智能分子交叉科学研究院招聘部分博士层次专业技术岗位人员(公共基础知识)综合能力测试题带答案解析
- 肝硬化HRS合并肝肾综合征型肝肾联合损伤方案
- T/CI 366-2024新能源汽车动力电池用高抗拉强度超薄铜箔
- 2025年中南体育考研真题及答案
- 2025浙江金华市东阳市部分机关事业单位招聘编外人74人员(二)笔试考试参考试题及答案解析
- 2025年6月浙江省高考历史试卷真题(含答案解析)
- 楼面建筑防水施工方案
- 2025年上海可行性研究报告收费标准
- 吴忠水泥排水管施工方案
- 周哈里窗的课件
评论
0/150
提交评论