首页 微机原理及应用(第2版)_陈继红_部分习题答案

微机原理及应用(第2版)_陈继红_部分习题答案

举报
开通vip

微机原理及应用(第2版)_陈继红_部分习题答案 微机原理及应用(陈继红、徐晨)课后习题答案 1 第三章 8086/8088指令系统和寻址方式 习题答案(部分) 3.1 总结计算机中十进制、二进制、八进制及十六进制数的书写形式。123D、0AFH、 77Q、1001110B分别表示什么计数制的数? 答案:123D、0AFH、77Q、1001110B分别表示十进制、十六进制、八进制、二进制。 3.2字长为 8位、16位二进制数的原码、补码表示的最大数和最小数分别是什么? 答案:8位原码表示的最大数:(27-1)、8位补码表示的最大数:(2...

微机原理及应用(第2版)_陈继红_部分习题答案
微机原理及应用(陈继红、徐晨)课后习题 答案 八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案 1 第三章 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)[X]原=10111110B,求[X]补 (2)[X]补=11110011B,求[-X]补 (3)[X]补=10111110B,求[X]原 (4)[X]补=10111110B,求[X]反 微机原理及应用(陈继红、徐晨)课后习题答案 2 答案:(1) 1100 0010 (2) 0000 1101 (3) 1100 0010 (4) 1011 1101 3.8 假设两个二进制数 A=01101010,B=10001100,试比较它们的大小。 (1)A、B两数均为带符号的补码数 (2)A、B两数均为无符号数 答案:(1)A、B两数均为带符号的补码数:A>B (2)A、B两数均为无符号数:A<B 3.9 下列各数均为十进制数,请用 8位二进制数补码计算下列各题,用十六进制数表示 其运算结果,并判断是否溢出,验证教材中所给的判断依据。 (1)90+71 (2)90-71 (3)-90-71 (4)-90+71 (5)-90-(-71) 答案:(1)90+71=161>127 溢出 [90]补+[71]补=0101 1010+0100 0111=1010 0001=0A1H=[-91]补 (2)90-71=19<127 无溢出 [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)11001100 10101010∧ (2)11001100 10101010∨ (3)11001100⊕10101010 (4)10101100 10101100∧ (5)10101100⊕10101100 (6)10101100 10101100∨ (7)10101100 答案:(1)11001100∧10101010=1000 1000 (2)11001100∨10101010=1110 1110 (3)11001100⊕10101010=0110 0110 (4)10101100∧10101100=1010 1100 (5)10101100⊕10101100=0000 0000 (6)10101100∨10101100=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.110011001100110×25 +5=0101B,补码:0101,尾数:[ 0.110011001100110]补=0.110011001100110 规格化浮点数:0 0000101 0 110011001100110 微机原理及应用(陈继红、徐晨)课后习题答案 3 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 [BX][SI],AX ;目标操作数为基址加变址寻址 PA=10500H (6)MOV 6[BP][SI],AL ;目标操作数为相对的基址加变址寻址 PA=12306H (7)MOV [1000H],DX ;目标操作数为存储器直接寻址 PA=11000H (8)MOV 6[BX],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 BYTE[BX],1000 ;1000大于 255,不能装入字节 单元 初级会计实务单元训练题天津单元检测卷六年级下册数学单元教学设计框架单元教学设计的基本步骤主题单元教学设计 (8)MOV CS,[1000] ;CS不能作为目标寄存器 (9)MOV BX,OFFSET VAR[SI] ;OFFSET只能取变量的偏移地址 (10)MOV AX,[SI][DI] ;SI、DI不能成为基址加变址 (11)MOV COUNT[BX][SI],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 微机原理及应用(陈继红、徐晨)课后习题答案 4 答案: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 [BP][SI],CL 与 MOV DS:[ BP][SI],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 微机原理及应用(陈继红、徐晨)课后习题答案 5 (4) CMP CX,DX JBE NEXT 3.25 阅读 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 下列指令序列: ADD AX,BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4 JMP L5 若 AX和 BX的初值分别为以下 5种情况,则执行该指令序列后,程序将分别转向何处 (L1~L5中的一个)。 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时,地址作减 量修改 微机原理及应用(陈继红、徐晨)课后习题答案 6 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 PTR[DI-1],20H CMP CX,0 JNZ AGE OVER: RET 3.30求双字长数 DX∶AX的相反数。 答: 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。 答案: 微机原理及应用(陈继红、徐晨)课后习题答案 7 程序段为: ;数据定义 STRING1 DB ‘ABCDEFGHIJK ;串 1,作为源串 STRING2 DB ‘ABCDFGKJ ;串 2,作为目标串 MATCH DB ? ;定义MATCH单元 ;功能代码 MOV AX,SEG STRING1 MOV DS,AX ;源串段地址送 DS MOV AX,SEG STRING2 MOV ES,AX ;目标串段地址送 ES LEA SI, STRING1 ;源串偏移地址送 SI LEA DI, STRING2 ;目标串偏移地址送 DI MOV CX, STRING1- STRING2 ;重复次数送 CX CLD ;地址增 REPE CMPSB ;相等继续比较,不相等退出 JZ EQUAL ;退出时,若 ZF=1,表示两串相等 MOV MATCH,0 ;不相同,MATCH单元赋值 0 JMP OVER EQUAL:MOV MATCH,1 ;相同MATCH单元赋值 1 OVER:HLT 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 微机原理及应用(陈继红、徐晨)课后习题答案 8 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单元中的双字节带符号数除以8,结果存 入 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单 元中。 答案: 微机原理及应用(陈继红、徐晨)课后习题答案 9 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(SP) ***** 150BH (SP) ***** 150BH (SP) ***** 150BH (SP) ***** 150BH(SP) *****(SP) (1) (2) (3) (4) (5) (6) 1A70H 1A70H 1000H 1B50H 1A70H 微机原理及应用(陈继红、徐晨)课后习题答案 10 第四章 汇编语言程序设计 习题答案(部分) 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 DS:010BH 00H DS:0101H 34H VARW DS:010CH 78H DS:0102H 47H DS:010DH 56H DS:0103H 4FH DS:010EH 44H DS:0104H 4FH DS:010FH 43H DS:0105H 44H DS:0110H 12H DS:0106H 01H DS:0111H 01H DS:0107H 00H DS:0112H 64H DS:0108H 00H DS:0113H 00H DS:0109H 01H DS:0114H 64H DS:010AH 00H DS:0115H 00H 4.6 按下列要求,写出各数据定义语句。 DB1为 10H个重复的字节数据序列:1,2,5个 3,4。 DB2为字符串‘STUDENTS’ DB3为十六进制数序列:12H,ABCDH 用等值语句给符号 COUNT赋以 DB1数据区所占字节数,该语句写在最后。 解答: 微机原理及应用(陈继红、徐晨)课后习题答案 11 DB1 DB 16 DUP(1,2,5 DUP(3),4) DB2 DB ‘STUDENTS’ DB3 DW 12H,0ABCDH COUNT EQU DB2-DB1 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 的 逻辑“或”运算。 4.8 对于下面的数据定义,各条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 DS:0113H DS:0101H 47H DS:0114H DS:0102H 4FH DS:0115H DS:0103H 54H DS:0116H DS:0104H 4FH DS:0117H DS:0105H 2FH DS:0118H DS:0106H 0DH DS:0119H DS:0107H 0AH DS:011AH DBB DS:0108H 05H DS:011BH DS:0109H 13H DDW DS:011CH 32H DS:010AH 61H DS:011DH 31H CCB DS:010BH DS:011EH 64H DS:010CH DS:011FH 00H DS:010DH DS:0120H 33H DS:010EH DS:0121H 03H DS:010FH DS:0122H 78H DS:0110H DS:0123H 00H DS:0111H DS:0124H 64H DS:0112H DS:0125H 00H 4.10 若自 STRING单元开始存放有一个字符串(以字符‘$’结束),试完成: (1)编程统计该字符串长度(不包含 $ 字符,并假设长度为两字节)。 (2)把字符串长度放在 STRING 单元,把整个字符串往下移两个单元。 微机原理及应用(陈继红、徐晨)课后习题答案 12 程序段为: (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 PTR[SI],‘ ’ 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 微机原理及应用(陈继红、徐晨)课后习题答案 13 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,BLOCK[SI] CMP AL,BLOCK[SI-1] ;比较相邻两数 JLE NEXT MOV AH,BLOCK[SI-1] ;交换两数 MOV BLOCK[SI-1],AL MOV BLOCK[SI],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 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 微机原理及应用(陈继红、徐晨)课后习题答案 14 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' jb error1 ;大写字母重新输入 sub al,20H ;减 20H转换为大写字母 mov dl,al mov ah,02h int 21h mov ax,4c00h int 21h code ends end start 4.15 键盘输入十个学生的成绩,试编制一个程序统计 69~69分,70~79分,80~89分, 90~99分及 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 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 微机原理及应用(陈继红、徐晨)课后习题答案 15 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 NEXT4: 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码转为两个ASCII码,并在屏幕上显示。 (2)宏定义的代码段如下: ADDM MACRO M1,M2,M3 MOV AX,[M1] ADD AX,[M2] MOV [M3],AX ENDM 微机原理及应用(陈继红、徐晨)课后习题答案 16 第五章 8086系统时序和微机总线 习题答案(部分) 5.1 什么是时钟周期、总线周期、指令周期? 答:8086CPU执行一条指令是由取指令、译码和执行等操作组成的,为了使 8086CPU 的各种操作协调同步进行,8086CPU 必须在时钟信号 CLK 控制下工作,时钟信号是一个 周期性的脉冲信号,一个时钟脉冲的时间长度称为一个时钟周期(Clock Cycle),是时钟频率 (主频)的倒数,时钟周期是计算机系统中的时间基准。 8086CPU 要通过总线才能与外部交换信息,CPU 通过总线接口单元与外部交换一次信 息,称为一次总线操作,所耗用的时间称为一个总线周期(Bus Cycle),也称机器周期(Machine Cycle)。一个总线周期由若干个时钟周期组成,总线操作的类型不同,总线周期也不同。一 个总线周期内完成的数据传输,一般有传送地址和传送数据两个过程。 8086CPU执行一条指令所需要的时间称为指令周期(Instruction Cycle),一个指令周期 由若干个总线周期组成, 5.2 8086微处理器各个 T状态的主要功能。 答:(1)在 T1状态,CPU往多路复用总线上发出地址信息,以指出要寻址的存储单元或 外设端口的地址。 (2)在 T2状态,CPU从总线上撤消地址,而使总线的低 16位浮空,置成高阻状态,为 传输数据作准备。总线的最高 4位(A19~A16)用来输出本总线周期状态信息。在这些状 态信息用来表示中断允许状态,当前正在使用的段寄存器名等。 (3)在 T3状态,多路总线的高 4位继续提供状态信息,而多路总线的低 16位(8088则 为低 8位)上出现由 CPU写出的数据或者 CPU从存储器或端口读入的数据。 (4)在有些情况下,外设或存储器速度较慢,不能及时地配合 CPU传送数据。这时,外 设或存储器会通过“READY”信号线在T3状态启动之前向CPU发一个“数据未准备好”信号, 于是 CPU会在 T3之后插入 1个或多个附加的时钟周期 Tw。Tw也叫等待状
本文档为【微机原理及应用(第2版)_陈继红_部分习题答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_824872
暂无简介~
格式:pdf
大小:263KB
软件:PDF阅读器
页数:30
分类:互联网
上传时间:2012-09-22
浏览量:1115