版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 8086/8088 指令系统和寻址方式 习题答案(部分)1.1 总结计算机中十进制、二进制、八进制及十六进制数的书写形式。123D、0AFH、77Q、1001110B 分别表示什么计数制的数?答案:123D、0AFH、77Q、1001110B 分别表示十进制、十六进制、八进制、二进制。1.2 字长为8 位、16 位二进制数的原码、补码表示的最大数和最小数分别是什么?答案:8 位原码表示的最大数:(27-1)、8 位补码表示的最大数:(27-1)、8 位原码表示的最小数:-(27-1)、8 位补码表示的最小数-27。16 位原码表示的最大数:(215-1)、16 位补码表示的最大数:(2
2、15-1)、16 位原码表示的最小数:-(215-1)、16 位补码表示的最小数-215。1.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。1.4 把下列无符号二进制数分别转换为十进制数和十六进制数。(1)1111 0000 (2)1000 0
3、000 (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。1.5 把下列无符号十六进制数分别转换为十进制数和二进制数。(1)FF (2)ABCD (3)123 (4)FFFF答案:(1)FF 十进制数:255D;二进制数;1111 1111B。(2)ABCD 十进制数:43981D;二进制数;1010 1011 1100 11
4、01B。(3)123 十进制数:291D;二进制数;0001 0010 0011B。(4)FFFF 十进制数:65535D;二进制数;1111 1111 1111 1111B。1.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 00000001 0000 补码: 0000 0000 0001 0000。(2)-16 8 位二进制数原码:1001 0000
5、 补码:1111 0000;16 位二进制数原码:1000 00000001 0000 补码:1111 1111 1111 0000。(3)+0 8 位二进制数原码:0000 0000 补码:0000 0000;16 位二进制数原码:0000 00000000 0000 补码:0000 0000 0000 0000。(4)-0 8 位二进制数原码:1000 0000 补码:0000 0000;16 位二进制数原码:1000 00000000 0000 补码: 0000 0000 0000 0000。(5)127 8 位二进制数原码:0111 1111 补码: 0111 1111;16 位二进制
6、数原码:0000 00000111 1111 补码: 0000 0000 0111 1111。(6)-128 8 位二进制数原码:无 补码: 1000 0000 ;16 位二进制数原码:1000 00001000 0000 补码:1111 1111 1000 0000。(7)121 8 位二进制数原码:0111 1001 补码: 0111 1001;16 位二进制数原码:0000 00000111 1001 补码: 0000 0000 0111 1001。(8)-9 8 位二进制数原码:1000 1001 补码:1111 0111;16 位二进制数原码:1000 00001000 1001 补
7、码:1111 1111 1111 0111。1.7 试实现下列转换。(1)原10111110B,求补 (2)补11110011B,求-补(3)补10111110B,求原 (4)补10111110B,求反答案:(1) 1100 0010 (2) 0000 1101 (3) 1100 0010 (4) 1011 11011.8 假设两个二进制数A01101010,B10001100,试比较它们的大小。(1)A、B 两数均为带符号的补码数 (2)A、B 两数均为无符号数答案:(1)A、B 两数均为带符号的补码数:AB(2)A、B 两数均为无符号数:AB1.9 下列各数均为十进制数,请用8 位二进制数
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
9、+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)110011001
10、0101010=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 00111.11 以下均为2 位十六进制数,试说明当把它们分别看作无符号数或字符的ASCII 码值,它们所表示的十进制数和字符是什么?(1)30H (2)39H (3)42H (4)62H (5)20H (6)7H答案:(1)30H 所
11、表示的十进制数是:48D;字符是:0。(2)39H 所表示的十进制数是:57D;字符是:9。(3)42H 所表示的十进制数是:66D;字符是:B。(4)62H 所表示的十进制数是:98D;字符是:b。(5)20H 所表示的十进制数是:32D;字符是:sp 空格。(6)7H 所表示的十进制数是:7D;字符是:BEL 报警。1.12 把以下十进制数分别以压缩BCD 码、非压缩BCD 码、ASCII 码串表示。(1)2 (2)78答案:(1)2 压缩BCD 码:0010、非压缩BCD 码:0000 0010、ASCII 码:011 0010(2)78 压缩BCD 码:0111 1000、非压缩BCD
12、 码:0000 0111 0000 1000、ASCII 码:01101110111001.13 设浮点数格式如下图所示:阶码、尾数均以补码表示,基数为2,求:+25.6 和-361.25 的规格化浮点数。答案:1) +25.6D=11001.1001100110B=0.11001100110011025+5=0101B,补码:0101,尾数: 0.110011001100110补=0.110011001100110规格化浮点数:0 0000101 0 1100110011001102) -361.25D=-101101001.01B=29(-0.101101001010000)+9=1001
13、,补码:1001,尾数: -0.101101001010000补=1.010010110110000规格化浮点数:0 0001001 1 0100101101100001.14 设某计算机用12 位表示一个浮点数,该浮点数从高位到低位依次为:阶符1 位、阶码3 位(原码表示)、数符1 位、尾数7 位(补码表示),则0 100 1 0110011 的真值是多少?答案:-9.625 3.1 8086 汇编语言指令的寻址方式有哪几类?哪种寻址方式的指令执行速度最快?解:寻址方式分为:立即数寻址方式、寄存器操作数寻址方式和存储器操作数寻址方式。其中,寄存器操作数寻址方式的指令执行速度最快。3.2 在直
14、接寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?如果要用某个段寄存器指出段地址,指令中应该如何表示?解:默认的数据访问,操作数在DS 段;堆栈操作在SS 段;串操作源操作数(SI)在DS段,目的操作数(DI)在ES 段;用BP 作为指针在SS 段。如果要显式地指定段地址,则在操作数中规定段寄存器。例如:MOV AX, ES:(BX+10H)3.3 8086 系统中,设DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H,BP=0100H,VAR 的偏移量为0600H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,计算它们的
15、物理地址。(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
16、(9)MOV VAR+5,AX ;目标操作数为存储器直接寻址 PA=10605H3.4下面这些指令中哪些是正确的?那些是错误的?如果是错误的,请说明原因。(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 不能作为目标寄
17、存器(9)MOV BX,OFFSET VARSI ;OFFSET 只能取变量的偏移地址(10)MOV AX,SIDI ;SI、DI 不能成为基址加变址(11)MOV COUNTBXSI,ES:AX ;AX 是寄存器,不能加段前缀3.5 试述以下指令的区别: MOV AX,3000H 与 MOV AX,3000H答案: MOV AX,3000H 指令源操作数的寻址方式为立即寻址方式,指令执行结果为:(AX)=3000H。 而MOV AX,3000H指令源操作数的寻址方式为直接寻址方式,指令执行结果为:DS:3000H)_AX。 MOV AX,MEM 与 MOV AX,OFFSET MEM答案:
18、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答案:JMP SHORT L1 为段内无条件短程转移,跳转的范围不得超过带符号的8 位二进制数表示的字节范围;JMP NEAR PTR L1 为段内无条件近程转移,跳转的范
19、围不得超过带符号的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+SI3.6 设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行的具体操作:MOV BYTE PTR BP, 2
20、0HMOV WORD PTR BX, 20H解:前一条指令是把立即数20H,传送至堆栈段(BP 的默认段)偏移量由BP 规定的字节单元,地址为:52000H+6200H=58200H第二条指令是把立即数20H,传送至数据段(BX 的默认段)偏移量由BX 规定的字单元,地址为:21000H+1400H = 22400H。3.7 设当前 SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执行 PUSH BX 指令后,栈顶地址和栈顶2 个字节的内容分别是什么?答案:当前栈顶的地址=2FF00H当执行PUSH BX 指令后,栈顶地址=2FEFEH(2FEFEH)=57H
21、(2FEFFH)=34H3.8 设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=03.9 设AX=0A69H,VALUE 字变量中存放的内容为1927H,写出下列各条指令执行后寄存器和CF、ZF、OF、SF、PF 的值。AX CF
22、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 13.10 设AX 和BX 中是符号数,CX 和DX 是无符号数,请分别为下列各项确定CMP和条件转移指令。CX 值超过DX 转移。AX 未超过BX 转移。DX 为0 转移。CX 值等于小于DX
23、 转移。答案:(1) CMP CX,DXJA NEXT(2) CMP AX,BXJLE NEXT(3) CMP DX,0JZ NEXT(4) CMP CX,DXJBE NEXT3.11 阅读分析下列指令序列:ADD AX,BXJNO L1JNC L2SUB AX,BXJNC L3JNO L4JMP L5若AX 和BX 的初值分别为以下5 种情况,则执行该指令序列后,程序将分别转向何处(L1L5 中的一个)。AX=13C6H, BX=80DCHAX=0B568H,BX=54B7HAX=42C8H, BX=608DHAX=0D023H,BX=9FD0HAX=9FD0H, BX=0D023H答案:(
24、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.12 用普通运算指令执行BCD 码运算时,为什么要进行十进制调整?具体地讲,在进行BCD 码的加、减、乘、除运算时,程序段的什么位置必须加上十进制调整指令?解:因为8086 指令把操作数作为二进制数进行二进制运算
25、,要得到正确的BCD 结果,需要进行调整。在加、减、乘法指令之后加上BCD 调整指令,而在除法指令之前先用BCD 调整指令再用除法指令。3.13 在编写乘除法程序时,为什么常用移位指令来代替乘除法指令?编写一段程序,实现将BX 中的数除以10,结果仍然放在BX 中。解:用移位指令时,左移l 位相当于将操作数乘2,右移1 位相当于将操作数除2。用移位指令实现一些简单的乘除法程序,比用乘法指令和除法指令进行乘、除运算要快得多。用除法指令实现:MOV CL 0AHMOV AX,BXIDIV CLMOV BX,AX3.14 串操作指令使用时特别要注意和SI,DI 这两个寄存器及方向标志DF 密切相关。
26、请具体就指令MOVSB/MOVSW、CMPSB/CMPSW、SCASB/SCASW、LODSB/LODSW、STOSB/STOSW 列表说明和SI、DI 及DF 的关系。解答:SI DI DFMOVSB/MOVSW 指出源地址指出目的地址不带 REP 重复前缀时,DF=0,每传送一次,SI、DI 加1 或加2,DF=1,SI、DI 则减1 或减2CMPSB/CMPSW存放源字符串首地址存放目的字符串首地址DF=0,每次比较后,SI、DI 加1 或加2,CX 减1,DF=1,SI、DI 减1 或减2,CX 减1SCASB/SCASW 无 指出字符串首址偏移量 无LODSB/LODSW 作为地址指
27、针存放处理结果DF=1 时,地址作增量修改,DF=0 时,地址作减量修改STOSB/STOSW 无 存放目的地址 无3.15 用串操作指令设计实现以下功能的程序段:首先将100H 个数从2170H 处搬到1000H 处,然后,从中检索相等于VAL 中字符的单元,并将此单元值换成空格符。解答:START:MOV AX, DSMOV ES, AXMOV SI, 2170HMOV DI, 1000HMOV CX, 100HCLDREP MOVSBANOTHER:MOV DI, 1000HMOV AL, VALMOV CX, 100HCLDAGE: SCASBJZ FINDEC CXJNZ AGEJM
28、P OVERFIN: MOV BYTE PTRDI-1,20HCMP CX,0JNZ AGEOVER: RET3.16 求双字长数DXAX 的相反数。答:NEG DXNEG AXSBB DX,03.17 试对数据段偏移地址为101H 单元中的单字节数求补后存入102H,最高位不变,低7 位取反存入103H,高4 位置1,低4 位不变,存入104H。答:MOV AX,0101HMOV BX,AXMOV CX,AXNOT AXMOV 0102H,AXXOR BX,7FHMOV 0103H,BXAND CX,0F0HMOV 0104H3.19 试编写一个程序,比较两个同长字符串STRING1 和ST
29、RING2 所含字符是否相同,若相同MATCH 单元赋值1,若不相同MATCH 单元赋值0。答案:程序段为:;数据定义STRING1 DB ABCDEFGHIJK ;串1,作为源串STRING2 DB ABCDFGKJ ;串2,作为目标串MATCH DB ? ;定义MATCH 单元;功能代码MOV AX,SEG STRING1MOV DS,AX ;源串段地址送DSMOV AX,SEG STRING2MOV ES,AX ;目标串段地址送ESLEA SI, STRING1 ;源串偏移地址送SILEA DI, STRING2 ;目标串偏移地址送DIMOV CX, STRING1- STRING2 ;
30、重复次数送CXCLD ;地址增REPE CMPSB ;相等继续比较,不相等退出JZ EQUAL ;退出时,若ZF=1,表示两串相等MOV MATCH,0 ;不相同,MATCH 单元赋值0JMP OVEREQUAL:MOV MATCH,1 ;相同MATCH 单元赋值1OVER:HLT3.20 编写代码,计算a+10b+100c+20d,其中a、b、c、d 均为单字节无符号数,结果为16位,存入SUM 开始的两单元中。data segmentma db 12mb db 21mc db 86md db 150SUM dw 0data endscode segmentassume ds:data,cs
31、:codestart:mov ax,datamov ds,axmov dh,0mov dl,mamov ah,0mov al,10mul mbadd dx,axmov ah,0mov al,100mul mcadd dx,axmov ah,0mov al,20mul mdadd dx,axmov SUM,dxcode endsend start3.21 试编写一段程序把LIST 到LIST+100 中的内容传到BLK 到BLK+100 中去。答案:程序段为:MOV AX,SEG LISTMOV DS,AX ;源串段地址送DSMOV AX,SEG BLKMOV ES,AX ;目标串段地址送ESL
32、EA SI, LIST ;源串偏移地址送SILEA DI, BLK ;目标串偏移地址送DIMOV CX, 101 ;重复次数送CXCLD ;地址增REP MOVSB3.23 设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=
33、CS:0082H;80H 对应的负数为-80H(向上转移,负位移量)(3) 转向目标的物理地址是:(CS)*10H+(IP)+0078H=CS:0180H(4) 转向目标的物理地址是:(CS)*10H+(IP)+0FFE0H=CS:00E2H;E2H 对应的负数为-1EH(向上转移,负位移量)3.24 不使用除法指令,将堆栈段中10H、11H 单元中的双字节带符号数除以,结果存入12H、13H 单元(注:多字节数存放格式均为低位在前,高位在后)。POP AXPOP BXTEST AX,8000H ;测试被除数符号位MOV CL,3JZ ZS ;若为正数,跳转到ZSSAR AX,CLJMP OV
34、ERZS: SHR AX,CLOVER:PUSH AX3.26 数据段中3030H 起有两个16 位的带符号数,试求它们的积,存入3034H-3036H 单元中。答案:MOV AX,3030HMOV BX,3032HIMUL BXMOV 3034H,AXMOV 3036H第四章 汇编语言程序设计 习题答案(部分)4.1 什么是标号?它有哪些属性?答:标号是一种特殊的标识符,它代表代码段中的某个具体位置,它主要用于表明转移的目标位置。源程序中的标号都有三种属性:段、偏移及类型。4.2 什么是变量?它有哪些属性?答:变量名代表存储器中的一个数据区的名字。源程序中的变量有五种属性:段、偏移、类型、长
35、度、规模。4.3 什么是伪指令?什么是宏指令?伪指令在什么时候被执行?宏指令在程序中如何被调用?答:伪指令语句是一种不产生目标代码的语句,它仅仅在汇编过程中告诉汇编程序应如何汇编。伪指令语句是在汇编程序对源程序汇编期间由汇编程序处理的操作。宏是若干语句组成的程序段,宏指令语句用来定义宏。一旦把某程序段定义成宏,则可以用宏名代替那段程序。在汇编时,要对宏进行宏展开,展开的过程是将宏名用程序段代替。4.4 汇编语言表达式中有哪些运算符?它们所完成的运算是在什么时候进行的?答:汇编语言表达式中的运算符有:算术运算符 +、*、/、MOD逻辑运算符 AND、OR、NOT、XOR关系运算符 EQ、NE、L
36、T、GT、LT、LE、GE分析运算符 SEG、OFFSET、TYPE、LENGTH、SIZE属性运算符 PTR、THIS、SHORT其 它 LOW、HIGH这些运算符都是在在汇编时由汇编程序对其运算的。4.5 画出下列语句中的数据在存储器中的存储情况。ORG 100HVARB DB 34,34H,GOOD,2 DUP(1,2 DUP(0)VARW DW 5678H,CD,$+2,2 DUP(100)VARC EQU 12VARB DS:0100H 22H DS:010BH 00HDS:0101H 34H VARW DS:010CH 78HDS:0102H 47H DS:010DH 56HDS:
37、0103H 4FH DS:010EH 44HDS:0104H 4FH DS:010FH 43HDS:0105H 44H DS:0110H 12HDS:0106H 01H DS:0111H 01HDS:0107H 00H DS:0112H 64HDS:0108H 00H DS:0113H 00HDS:0109H 01H DS:0114H 64HDS:010AH 00H DS:0115H 00H46 按下列要求,写出各数据定义语句。DB1 为10H 个重复的字节数据序列:1,2,5 个3,4。DB2 为字符串STUDENTSDB3 为十六进制数序列:12H,ABCDH用等值语句给符号COUNT 赋
38、以DB1 数据区所占字节数,该语句写在最后。解答:DB1 DB 16 DUP(1,2,5 DUP(3),4)DB2 DB STUDENTSDB3 DW 12H,0ABCDHCOUNT EQU DB2DB14.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
39、和0FFH 作逻辑“或”运算,得到结果12FFH。然后执行第一个OR 指令,完成AX 的内容与12FFH 的逻辑“或”运算。48 对于下面的数据定义,各条MOV 指令单独执行后,有关寄存器的内容是什么?PREP DB ?TABA DW 5 DUP(?)TABB DB NEXTTABC 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
40、TABC ;AX=44.9 设数据段DSEG 中符号及数据定义如下,试写出数据在内存中的存储示意图。(数据段DSEG 定义略)解答:DAB DS:0100H 2FH DS:0113HDS:0101H 47H DS:0114HDS:0102H 4FH DS:0115HDS:0103H 54H DS:0116HDS:0104H 4FH DS:0117HDS:0105H 2FH DS:0118HDS:0106H 0DH DS:0119HDS:0107H 0AH DS:011AHDBB DS:0108H 05H DS:011BHDS:0109H 13H DDW DS:011CH 32HDS:010AH
41、 61H DS:011DH 31HCCB DS:010BH DS:011EH 64HDS:010CH DS:011FH 00HDS:010DH DS:0120H 33HDS:010EH DS:0121H 03HDS:010FH DS:0122H 78HDS:0110H DS:0123H 00HDS:0111H DS:0124H 64HDS:0112H DS:0125H 00H4.10 若自STRING 单元开始存放有一个字符串(以字符$结束),试完成:(1)编程统计该字符串长度(不包含 $ 字符,并假设长度为两字节)。(2)把字符串长度放在STRING 单元,把整个字符串往下移两个单元。程序段
42、为:(1)MOV SI, OFFSET STRINGXOR BX, BXCONT:MOV AL, SICMP AL, $JZ NEXTINC BXINC SIJMP CONTNEXT:MOV AH, 4CHINT 21H(2)STRING DB $COUNT EQU $-STRINGMOV SI, OFFSET STRINGMOV CX, COUNTADD SI, CXCONT: DEC SIMOV AL, SIMOV SI+2, ALLOOP CONTMOV CX, COUNTMOV STRING, CXMOV AH, 4CHINT 21H4.11 将字符串STRING 中的&字符用空格代替
43、,字符串STRING“It is FEB&03”。解答程序为:DATA SEGMENTSTRING DB It is FEB&03COUNT EQU $-STRINGDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET STRINGMOV CX,COUNTMOV AL,$CONT:CMP AL,SIJNZ NEXTMOV BYTE PTRSI, NEXT: INC SILOOP CONTMOV AH,4CHINT 21HCODE ENDSEND START4.15 试编写一个汇编语言
44、程序,要求对键盘输入的小写字母用大写字母显示出来。解答程序为:data segmentmessage 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 endsstack segmentdb 100h dup(?)stack endscode segmen
45、tassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axjmp l1xor ax,axerror1:lea dx,errormov ah,09hint 21hl1:lea dx,messagemov ah,09hint 21hlea dx,lettermov ah,01hint 21hpush axmov dl,0ahmov ah,02hint 21hmov dl,0dhint 21hlea dx,message3mov ah,09hint 21hpop axcmp al,z ;比较,判断是否小写字母ja error1cmp al,a
46、jb error1 ;大写字母重新输入sub al,20H ;减20H 转换为大写字母mov dl,almov ah,02hint 21hmov ax,4c00hint 21hcode endsend start416 键盘输入十个学生的成绩,试编制一个程序统计6969 分,7079 分,8089 分,9099 分及100 分的人数,分别存放到S6,S7,S8,S9 及S10 单元中。解答程序为:DATA SEGMENTBUF DB 10 DUP(?)S6 DB ?S7 DB ?S8 DB ?S9 DB ?S10 DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,
47、DS:DATASTART: MOV AX,DATAMOV DS,AXMOV SI,OFFSET S6XOR AL,ALMOV CX,0504HCONT: MOV SI,ALINC SILOOP CONTMOV CX,10MOV SI,OFFSET BUFCONT1: MOV AH,1INT 21HSHL AL,CLMOV BL,ALMOV AH,1INT 21HSUB AL,30HOR AL,BLMOV SI,ALCMP AL,70HJAE NEXT1INC BYTE PTR S6NEXT1: CMP AL,80HJAE NEXT2INC BYTE PTR S7NEXT2: CMP AL,90
48、HJAE NEXT3INC BYTE PTR S8NEXT3: CMP AL,99HJA NEXT4INC BYTE PTR S9JMP NEXT5NEXT4: INC BYTE PTR S10NEXT5: INC SILOOP CONT1MOV AH,4CHINT 21HCODE ENDSEND START第五章 8086 系统时序和微机总线 习题答案(部分)5.1 什么是时钟周期、总线周期、指令周期?答:8086CPU 执行一条指令是由取指令、译码和执行等操作组成的,为了使 8086CPU的各种操作协调同步进行,8086CPU 必须在时钟信号 CLK 控制下工作,时钟信号是一个周期性的脉冲
49、信号,一个时钟脉冲的时间长度称为一个时钟周期(Clock Cycle),是时钟频率(主频)的倒数,时钟周期是计算机系统中的时间基准。8086CPU 要通过总线才能与外部交换信息,CPU 通过总线接口单元与外部交换一次信息,称为一次总线操作,所耗用的时间称为一个总线周期(Bus Cycle),也称机器周期(MachineCycle)。一个总线周期由若干个时钟周期组成,总线操作的类型不同,总线周期也不同。一个总线周期内完成的数据传输,一般有传送地址和传送数据两个过程。8086CPU 执行一条指令所需要的时间称为指令周期(Instruction Cycle),一个指令周期由若干个总线周期组成,5.3
50、 8086 和8088 有何区别?答:这两种CPU 的主要区别如下: 外部数据总线位数:8086 CPU 的外部数据总线有16 位,在一个总线周期内可输入/输出一个字(16 位数据),使系统处理数据和对中断响应的速度得以加快;而8088 CPU 的外部数据总线为8 位,在一个总线周期内只能输入/输出一个字节(8 位数据)。 指令队列容量:8086 CPU 的指令队列可容纳6 个字节,且在每个总线周期中从存储器中取出2 个字节的指令代码填入指令队列,这可提高取指操作和其它操作的并行率,从而提高系统工作速度;而8088 CPU 的指令队列只能容纳4 个字节,且在每个总线周期中能取一个字节的指令代码
51、,从而增长了总线取指令的时间,在一定条件下可能影响取指令操作和其它操作的并行率。 引脚特性:两种CPU 的引脚功能是相同的,但有以下几点不同:1) AD15AD0 的定义不同:在8086 中都定义为地址/数据复用总线;而8088 中,由于只需8 条数据总线,因此,对应于8086 的AD15AD8 这8 条引脚定义为A15A8,只作地址线使用。2) 34 脚的定义不同:在8086 中定义为BHE信号;而在8088 中定义为SSO,它与DT / R,IO /M一起用作最小方式下的周期状态信号。3) 28 脚的相位不同,在8086 中为M / IO;而在8088 中被倒相,改为IO/M,以便与808
52、0/8085 系统的总线结构兼容。5.4 8086 是怎样解决地址线和数据线的复用问题的?ALE 的作用是什么?答:(1)、AD15-AD0 采用分时的多路转换方法来实现对地址线和数据线的复用。在总线周期T1 状态下,这些引线表示为低16 位地址线,在总线周期为T2、T3、TW 状态,这些引线用作数据总线,可见对复用信号是用时间来加以划分的,他要求在T1 状态下先出现低16 位地址时,用地址锁存器加以锁存,随后的T 状态,即使这些用作数据线,而低16位地址线的地址状态去被记录保存下来,并达到地址总线上。(2)、ALE 是地址锁存允许信号,高电平有效。第六章 存储器 习题答案(部分)6.1 试说
53、明半导体存储器的分类。答:半导体分为:RAM 和ROM。RAM 分为静态RAM 和动态RAM。ROM 分为:掩膜ROM、PROM、EPROM、E2PROM。6.2 试说明CMOS 静态存储器基本存储电路数据读、写的原理。第七章 基本输入/输出接口 习题答案(部分)7.1 简述I/O 接口的主要功能。答:(1)对输入输出数据进行缓冲和锁存(2)对信号的形式和数据的格式进行变换(3)对I/O 端口进行寻址(4)提供联络信号7.2 CPU 与外设之间的数据传输方式有哪些?简要说明各自含义。答:(1)程序方式:微机系统与外设之间的数据传输过程在程序的控制下进行(2)中断方式:在中断传输方式下,当输入设
54、备将数据准备好或输出设备可以接收数据时,便向CPU 发出中断请求,使CPU 暂时停止执行当前程序,而去执行数据输入输出的中断服务程序,与外设进行数据传输操作,中断服务程序执行完后,CPU 又返回继续执行原来的程序。(3)直接存储器存取(DMA)方式:DMA 方式是指不经过CPU 的干预,直接在外设和内存之间进行数据传输的方式。7.3 什么是端口?通常有哪几类端口?计算机对I/O 端口编址时通常采用哪?在80x86系统中,采用哪一种方法?每个I/O 接口内部一般由三类寄存器组成。CPU 与外设进行数据传输时,各类信息在接口中进入不同的寄存器,一般称这些寄存器为I/O 端口。I/O 端口通常有数据端口、状态端口、控制端口。计算机对I/O 端口编址时通常采用:I/O 端口与内存统一编址、I/O 端口独立编址两种方法。在80x86 系统中,采用I/O 端口独立编址方法。74 现有一输入设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年移动金融教育企业制定与实施新质生产力战略分析研究报告
- 智能消费设备行业市场营销创新战略制定与实施分析报告
- 2025-2030年信笺本(信纸本)行业数字营销策略分析研究报告
- 高二零诊试题及答案
- 2026年公司章程合同协议含股权转让
- 2026届武汉市九年级语文中考压轴冲刺原创仿真模拟试卷(含参考答案解析与作文范文)
- 会计笔试试题及答案
- 2026年安全工程师法规模块题库
- 2026年证券投资分析模拟试题及答案
- 2026年初级会计职称初级会计实务模拟题及重点解析
- 跨文化交际(东北农业大学)智慧树知到课后章节答案2023年下东北农业大学
- 资本结构代理成本外文翻译文献
- 华住工程竣工验收检查标准
- 应急食品物资保障协议书
- 数字水印技术课件
- 2023年绿皮书观后感400字(九篇)
- 光电子能谱XPS课程
- 初中数学-一元一次不等式组(1)教学课件设计
- 清平乐·春归何处
- 蒙牛渠道现代通路作业规范指导手册
- 《神经病学》教学大纲
评论
0/150
提交评论