微机原理及应用(陈继红、徐晨)课后习题答案.doc_第1页
微机原理及应用(陈继红、徐晨)课后习题答案.doc_第2页
微机原理及应用(陈继红、徐晨)课后习题答案.doc_第3页
微机原理及应用(陈继红、徐晨)课后习题答案.doc_第4页
微机原理及应用(陈继红、徐晨)课后习题答案.doc_第5页
免费预览已结束,剩余69页可下载查看

下载本文档

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

文档简介

微机原理及应用(陈继红、徐晨)课后习题答案 第三章 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位原码表示的最大数:(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 把下列无符号二进制数分别转换为十进制数和十六进制数。 (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 1111B。 (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 0000 补码: 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 0000 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)-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、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+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)1100110010101010 (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 0011 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 把以下十进制数分别以压缩 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.11001100110011025 +5=0101B,补码 :0101,尾数: 0.110011001100110补=0.110011001100110 规格化浮点数: 0 0000101 0 110011001100110 2 微机原理及应用(陈继红、徐晨)课后习题答案 2) -361.25D=-101101001.01B=29(-0.101101001010000) +9=1001,补码:1001,尾数: -0.101101001010000补=1.010010110110000 规格化浮点数 :0 0001001 1 010010110110000 3.14 设某计算机用 12位表示一个浮点数,该浮点数从高位到低位依次为:阶符 1位、阶码 3位(原码表示)、数符 1位、尾数 7位(补码表示 ),则 0 100 1 0110011的真值是多少?答案:-9.625 3.15 8086汇编语言指令的寻址方式有哪几类 ?哪种寻址方式的指令执行速度最快 ?解:寻址方式分为 :立即数寻址方式、寄存器操作数寻址方式和存储器操作数寻址方式。其中,寄存器操作数寻址方式的指令执行速度最快。 3.16 在直接寻址方式中 ,一般只指出操作数的偏移地址 ,那么,段地址如何确定?如果要用某个段寄存器指出段地址 ,指令中应该如何表示 ?解:默认的数据访问 ,操作数在 DS段;堆栈操作在 SS段;串操作源操作数 (SI)在 DS段,目的操作数 (DI)在 ES段;用 BP作为指针在 SS段。如果要显式地指定段地址,则在操作数中规定段寄存器。例如: MOV AX, ES:(BX+10H) 3.17 8086系统中,设 DS=1000H,ES=2000H,SS=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;目标操作数为相对的基址加变址寻址 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中(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)=3000H。而 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 NEAR 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=SS+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=2010H,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 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 ; F596H 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 JBE NEXT 3.25 阅读分析下列指令序列: ADD AX,BX JNO L1 JNC L2 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处,减法借位 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在编写乘除法程序时,为什么常用移位指令来代替乘除法指令?编写一段程序,实现将 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的关系。解答: 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.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 JNZ 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所含字符是否相同,若相同 MATCH单元赋值 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 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 0 data ends code segment assume 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,0 7 微机原理及应用(陈继红、徐晨)课后习题答案 mov al,20 mul md add dx,ax mov SUM,dx code ends end start 3.35试编写一段程序把 LIST到 LIST+100中的内容传到 BLK到 BLK+100中去。答案:程序段为: 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,所以当执行该指令时 (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、13H单元(注:多字节数存放格式均为低位在前,高位在后)。 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调用 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) (SP) (SP) (4) (5) (6) 9 微机原理及应用(陈继红、徐晨)课后习题答案 第四章汇编语言程序设计习题答案(部分) 4.1 什么是标号?它有哪些属性?答:标号是一种特殊的标识符,它代表代码段中的某个具体位置,它主要用于表明转移的目标位置。源程序中的标号都有三种属性:段、偏移及类型。 4.2 什么是变量?它有哪些属性?答:变量名代表存储器中的一个数据区的名字。源程序中的变量有五种属性:段、偏移、类型、长度、规模。 4.3 什么是伪指令?什么是宏指令?伪指令在什么时候被执行?宏指令在程序中如何被调用?答:伪指令语句是一种不产生目标代码的语句,它仅仅在汇编过程中告诉汇编程序应如何汇编。伪指令语句是在汇编程序对源程序汇编期间由汇编程序处理的操作。宏是若干语句组成的程序段,宏指令语句用来定义宏。一旦把某程序段定义成宏,则可以用宏名代替那段程序。在汇编时,要对宏进行宏展开,展开的过程是将宏名用程序段代替。 4.4 汇编语言表达式中有哪些运算符?它们所完成的运算是在什么时候进行的?答:汇编语言表达式中的运算符有:算术运算符 +、*、/、MOD 逻辑运算符 AND、OR、NOT、XOR 关系运算符 EQ、NE、LT、GT、LT、LE、GE 分析运算符SEG、OFFSET、TYPE、LENGTH、SIZE属性运算符 PTR、THIS、SHORT其它 LOW、HIGH 这些运算符都是在在汇编时由汇编程序对其运算的。 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:0106H 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为字符串STUDENTS DB3为十六进制数序列:12H,ABCDH 用等值语句给符号 COUNT赋以 DB1数据区所占字节数,该语句写在最后。解答:10 微机原理及应用(陈继红、徐晨)课后习题答案 DB1 DB 16 DUP(1,2,5 DUP(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指令,完成 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中符号及数据定义如下,试写出数据在内存中的存储示意图。 (数据段 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 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 微机原理及应用(陈继红、徐晨)课后习题答案 程序段为:(1) MOV SI, OFFSET STRING XOR BX, BX CONT:MOV AL, SI CMP AL, $ JZ NEXT INC BX INC SI JMP CONT 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, 4CH INT 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 NEXT MOV BYTE PTRSI, NEXT: INC SI LOOP CONT MOV 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: 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 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 db 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 e

温馨提示

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

评论

0/150

提交评论