微机基础原理知识与接口技术8086和Proteus仿真题集参考答案.doc
-/第1章 习题答案1.答:为了区别所使用的数制,一般用以下两种书写格式表示: 用括号将数字括起,后面加数制区分,数制用下标的形式给出; 用后缀区分,二进制数、十进制数、八进制数、十六进制数的后缀分别为字母B(或b)、D(或d)、O(或o)或Q(或q)、H(或h)。例如:十六进制数56.78可以表示成(56.78)16或56.78H; 十进制数56.78可以表示成(56.78)10或56.78D。2.答:123D采用十进制,0AFH采用十六进制,77Q采用八进制,1001110B采用二进制。3.答:字长为8位的二进制数原码表示的最大值:127,最小值:-127;补码表示的最大值:127,最小值:-128。字长为16位的二进制数原码表示的最大值:32767,最小值:-32767;补码表示的最大值:32767,最小值:-32768。4.答:(1)125D=0111 1101B=7DH(2) 255D=1111 1111B=FFH(3)72D=0100 1000B=48H(4)5090D=0001 0011 1110 0010B=13E2H5.答:(1)1111 0000B=240D=F0H(2) 1000 0000 B =128D =80H(3)1111 1111 B =255 D =FFH(4)0101 0101B=85D=55H6.答:(1)FFH=255D=1111 1111B(2) ABCDH=43947D=1010 1011 1100 1101B(3) 123H=291D=0000 0001 0010 0011B(4) FFFFH=65535D=1111 1111 1111 1111B7.答:(1)8位时(16)原=0001 0000 ; (16)补=0001 0000;16位时(16)原=0000 0000 0001 0000 ; (16)补=0000 0000 0001 0000;(2) 8位时(-16)原=1001 0000 ; (-16)补=1111 0000;16位时(-16)原=1000 0000 0001 0000 ; (-16)补=1111 1111 1111 0000;(3) 8位时(+0)原=0000 0000; (+0)补=0000 0000;16位时(+0)原=0000 0000 0000 0000; (+0)补=0000 0000 0000 0000;(4) 8位时(-0)原=1000 0000 ; (-0)补=0000 0000;16位时(-0)原=1000 0000 0000 0000; (-0)补=0000 0000 0000 0000;(5) 8位时(127)原=0111 1111; (127)补=0111 1111;16位时(127)原=0000 0000 0111 1111; (127)补=0000 0000 0111 1111;(6) 8位时-128超过原码表示的范围; (-128)补=1000 0000;16位时(-128)原=1000 0000 1000 0000; (-128)补=1111 1111 1000 0000;(7) 8位时(121)原=0111 1001 ; (121)补=0111 1001;16位时(121)原=0000 0000 0111 1001; (121)补=0000 0000 0111 1001;(8) 8位时(-9)原=1000 1001 ; (-9)补=1111 0111;16位时(-9)原=1000 0000 0000 1001; (-9)补=1111 1111 1111 0111;8.答:(1) x补=1100 0010;(2)-x补=0000 1101;(3)x原=1100 0010;(4)x反=1011 1101。9.答:(1)AB;(2)AB10.答:(1)溢出;(2)13H;(3)溢出;(4)EDH;(5)EDH。11.答:(1)1000 1000;(2)1110 1110;(3)0110 0110;(4)1010 1100;(5)0000 0000;(6)1010 1100;(7)=0101 0011。12.答:(1)30H=48,字符为0;(2)39H=57,字符为9;(3)42H=66,字符为B;(4)62H=98,字符为b;(5)20H=32,字符为空格;(6)7H=7,字符为报警符;13、答:十进制49123762压缩BCD码0100 1001B0001 0010 0011B0000 0111B0110 0010B非压缩BCD码0000 0100 0000 1001B0000 0001 0000 0010 0000 0011B0000 0111B0000 0110 0000 0010BASCII码3439H313233H37H3632H第2章 习题答案1.(1)答:物理地址:物理地址(PA)是20位无符号二进制数,是CPU访问存储器的实际地址。每个存储单元对应一个物理地址。8086存储空间的物理地址范围是:00000HFFFFFH。逻辑地址:采用分段结构的存储器中,把通过段地址和偏移地址来表示的存储单元的地址称为逻辑地址,记为:段地址:偏移地址。段地址:8086规定各逻辑段从节的整数边界开始,即段首地址二进制值的低4位是0000,把段首地址的高16位称为段基址或段地址。偏移地址:把某一存储单元相对于段地址的段内偏移量称为偏移地址(也称有效地址EA)。段地址和偏移地址都是是16位无符号二进制数。(2)答:时钟周期:计算机的“时钟”是由振荡源产生的、幅度和周期不变的节拍脉冲,每个脉冲周期称为时钟周期,又称为T状态或T周期,时钟周期是微机系统工作的最小时间单元。总线周期:当CPU访问存储器或输入/输出端口时,需要通过总线进行读或写操作,这个过程称为总线周期(Bus Cycle)。总线周期是利用总线完成一次读/写所需要的时间。指令周期:执行一条指令所需要的时间称为指令周期(Instruction Cycle)。指令周期由1个或多个总线周期组成。(3)答:最小模式:也称为单处理器模式,是指系统中只有一片8086微处理器,所连接的存储器容量不大、片子不多,所要连接的I/O端口也不多,系统的控制总线就直接由CPU的控制线供给,从而使得系统中的总线控制电路减到最少。最小模式适用于较小规模的系统。最大模式:相对于最小模式而言,适用于中、大型规模的系统。系统中有多个微处理器,其中一个是主处理器8086,其他的处理器称为协处理器,承担某方面专门的工作。需要增加一片8288来对8086CPU发出的控制信号进行变换和组合,以得到对存储器或I/O端口的读/写信号和对锁存器、总线收发器的控制信号。2.答:EU:负责指令的执行,即从总线接口部件BIU的指令队列取指令,指令执行后向BIU送回运算结果,同时把运算结果的状态特征保存到标志寄存器中。BIU:负责CPU与存储器、I/O设备之间的数据传送。BIU完成以下操作:取指令送给指令队列、配合执行部件从指定的内存单元或者外设端口中取数据、将数据传送给执行部件或者把执行部件的操作结果传送到指定的内存单元或外设端口中。8086的BIU和EU在很多时候可以并行工作,使得取指令、指令译码和执行指令这些操作构成操作流水线。 当指令队列中有两个空字节,且EU没有访问存储器和I/O接口的要求时,BIU会自动把指令取到指令队列中。 当EU准备执行一条指令时,它会从指令队列前部取出指令执行。在执行指令的过程中,如果需要访问存储器或者I/O设备,那么EU会向BIU发出访问总线的请求,以完成访问存储器或者I/O接口的操作。如果此时BIU正好处于空闲状态,那么,会立即响应EU的总线请求;但如果BIU正在将某个指令字节取到指令队列中,那么,BIU将首先完成这个取指令操作,然后再去响应EU发出的访问总线的请求。 当指令队列已满,而且EU又没有总线访问时,BIU便进入空闲状态。 在执行转移指令、调用指令和返回指令时,下面要执行的指令就不是在程序中紧接着的那条指令了,而BIU往指令队列装入指令时,总是按顺序进行的。在这种情况下,指令队列中已经装入的指令就没有用了,会被自动消除。随后,BIU会往指令队列中装入另一个程序段中的指令。3.答:地址信号是CPU发送给内存或I/O设备的,所以地址线是单向的;数据信号可以从CPU发送给内存或I/O设备,也可以从内存或I/O设备发送给CPU,故而数据线是双向的。4.答:8086CPU中有14个寄存器。它们是:4个16位的通用寄存器:AX、BX、CX、DX和8个8位的通用寄存器:AH、AL、BH、BL、CH、CL、DH、DL;指针和变址寄存器SP、BP、 SI、DI;4个16位的段寄存器CS、DS、SS和ES;标志寄存器FR;指令指针寄存器IP。功能略。5.答:(1)加法运算的结果为:CEACH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=1;(2)加法运算的结果为:68ACH;CF=0,PF=1,AF=0,ZF=0,SF=0,OF=0;(3)加法运算的结果为:DDDDH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=0。6.答:8086CPU可寻址的存储器地址范围是00000HFFFFFH;可寻址的I/O端口地址范围是0000HFFFFH。7.答:由于8086CPU提供20位地址,但8086中可用来存放地址的寄存器,如IP、SP、BX、SI等都是16位的,只能直接寻址64KB。为了寻址1MB存储空间,8086CPU采用了典型的存储器分段技术,即将整个存储器空间分为许多逻辑段,每个逻辑段的容量小于或等于64KB。分段后,对存储器的寻址操作不再直接用20位的物理地址,而是采用段地址加段内偏移地址的二级寻址方式。8.答:将AH的内容送存储单元的操作过程中:;将I/O端口的内容送AL的操作过程中:。 9.答: A0有效的数据引脚操 作0 0AD15AD0(一个总线周期同时访问奇体和偶体,从奇地址单元读/写字数据的高8位,从偶地址单元读/写字数据的低8位)从偶地址读/写一个字1 0AD7AD0从偶地址读/写一个字节0 1AD15AD8从奇地址读/写一个字节0 11 0AD15AD8(第一个总线周期从奇字数据的低8位)AD7AD0(第二个总线周期从偶地址单元读/写字数据的高8位)从奇地址读/写一个字10.答:8086系统复位后,指令指针(IP)为0000H;CS寄存器为FFFFH,其他寄存器为0000H;指令队列清空。11.答:8086的A19/S6A16/S3和AD15AD0是复用信号,需要地址锁存器将地址信息保存起来,为外接存储器或外设提供地址信息。需要锁存的信号是:地址信号及信号。12.答:8086CPU一个基本的总线周期包含4个时钟周期:T1、T2、T3和T4 。在T1状态,有效,指示CPU访问的是存储器还是外设,之后CPU往多路复用总线上发出地址信息,以指出要寻址的存储单元或外设端口的地址。在T1状态,CPU还必须在ALE引脚上输出一个正脉冲作为地址锁存信号。信号也在T1状态送出,它用来表示数据传送的字宽。在T2状态,CPU从总线上撤销地址,使总线的低16位浮空,置成高阻状态,为传输数据作准备。总线的最高4位(A1916)用来输出本总线周期的状态信息。读信号或写信号在T2状态变为有效,指示CPU将进行哪种操作(读或写)。在T3状态,多路总线的高4位继续提供状态信息,而多路总线的低16位上出现由CPU读出的数据或者CPU从存储器或端口写入的数据。在T4状态和前一个状态的交界处,CPU对数据总线进行采样,获得数据,总线周期结束。13.答:在有些情况下,外设或存储器速度较慢,不能及时地配合CPU传送数据。这时,外设或存储器会通过“READY”信号线在T3状态启动之前向CPU发一个“数据未准备好”信号,于是CPU会在T3之后插入1个或多个附加的时钟周期TW。取决与外设或存储器速度。14.答:两种操作时序的不同之处发生在T1和T2状态。 在T1状态,读周期:应输出低电平;写周期:应输出高电平。 在T2状态,读周期:有效,而无效,AD15AD0为高阻态;写周期:变为无效,而写信号变为有效,AD15AD0在地址撤销之后立即送出要写入存储器或外设端口的数据。15.答:在最小模式下,读信号、ALE和、等信号直接由CPU给出;在最大模式下,总线控制器8288根据和状态信号产生读信号和,ALE和、DEN也是由8288发出的,而且DEN信号的极性与CPU在最小模式下发出的信号正好相反。第3章 习题答案1.答:指令中关于如何求出操作数有效地址的方法称为寻址方式。8086CPU支持多种寻址方式,根据操作数的类型及来源大致分为3类:数据寻址、转移地址寻址和I/O寻址。2.答:8086汇编指令可以采用7种基本的数据寻址方式:立即寻址;寄存器寻址;直接寻址;寄存器间接寻址;寄存器相对寻址;基址变址寻址;相对基址变址寻址。与存储器寻址方式(后5种)相比,寄存器寻址方式最快。3.答:如果指令中没有用前缀说明操作数存放在哪个段,则操作数默认存放在数据段。8086系统允许操作数存放在代码段、堆栈段或附加段。此时,就需要在指令中利用前缀指明段超越。例如:MOV ES:1225H,AX 4.答:(1)寄存器寻址方式(2)寄存器间接寻址方式,PA=10300H(3)寄存器间接寻址方式,PA=20200H(4)直接寻址方式,PA=10060H(5)基址变址寻址方式,PA=10500H(6)相对基址变址寻址方式,PA=12300H(7)直接寻址方式,PA=11000H(8)寄存器相对寻址方式,PA=10306H(9)直接寻址方式,PA=10065H5.答:(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)6.答:(1)源操作数的寻址方式不同。MOV AX,3000H指令的源操作数采用的是立即数寻址方式,MOV AX,3000H指令的源操作数采用的是直接寻址方式。(2)指令执行后,AX的值不同。MOV AX,MEM指令执行后,AX得到的是MEM单元的内容,而MOV AX,OFFSET MEM指令执行后,AX得到的是MEM单元的地址。(3)指令不同。MOV AX,MEMMOV AX,MEM指令执行后,AX得到的是MEM单元的内容,而LEA AX,MEM指令执行后,AX得到的是MEM单元的地址。(4)转移的类型不同。JMP SHORT L1指令实现的是段内转移,而JMP NEAR PTR L1指令实现的是段间转移。(5)指令的执行结果不同。CMP DX,CX指令执行后,DX的值不变,而SUB DX,CX指令执行后,DX的值是两寄存器值的差。(6)操作数所在段不同。MOV BPSI,CL指令访问的是堆栈段的存储单元,而MOV DS:BPSI,CL指令访问的是数据段的存储单元。 7.答:(1)MOV BYTE PTR BP,200指令执行后,(58200H)=200H(2)MOV WORD PTR BX,2000指令执行后,(22400H)=2000H8.答:当前栈顶地址是:FE00H:2010H;执行PUSH BX指令后,栈顶地址变为:FE00H:200EH,栈顶2字节内容是:3457H。9.答:(1)(DX)=3C62H,CF=1(2)(DX)=03C6H,CF=0(3)(DX)=18A0H,CF=1(4)(DX)=2BC6H,CF=0(5)(DX)=18B7H,CF=1(6)(DX)=BCC5H,CF=010.答: (AX)CFZFOFSFPF(1)134EH00001(2)0821H00001(3)F142H10011(4)0A6910011(5)F596-(6)0A690000111.答:(1) CMP CX,DX JA NEXT(2)CMP AX,BX JNA NEXT(3)CMP DX,0 JZ NEXT(4)CMP CX,DX JBE NEXT12.答: (1) 程序转向L1。(2) 程序转向L1。(3) 程序转向L2。(4) 程序转向L5。(5) 程序转向L5。13.答:因为普通运算指令执行的是二进制数的运算,而BCD码是十进制数,所以,需要对运算结果进行十进制调整。在做BCD码的加、减和乘法运算时,十进制调整指令放在运算指令之后;而作BCD码的除法运算时,在运算指令之前用十进制调整指令对被除数进行调整。14.答: MOV Cl,3 SHR bx,cl15.答:(略)16.答:DATASEGMENTCOUNT=100HORG 1000HD_DATADBCOUNTDUP(?)ORG 2170HS_DATADB COUNT/5 DUP(1,2,3,4,5)DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART: MOVAX,DATAMOVDS,AXMOVES,AXLEASI,S_DATALEADI,D_DATAMOVCX,COUNTREPMOVSBMOVAL,1MOVCX,COUNTLEADI,D_DATAAGAIN:CMPBYTE PTR DI,ALJNZNEXTMOVBYTE PTR DI, NEXT:INC DILOOP AGAINEXIT:MOVAH,4CHINT 21HCODEENDSEND START 17.答:CODESEGMENTASSUME CS:CODESTART: MOV AX,5678HMOV DX,1234HNOT AXNOT DXADD AX,1ADC DX,0EXIT:MOVAH,4CHINT 21HCODEENDSEND START18. 答:;本程序未考虑溢出的情况。DATASEGMENTA1DW5050HA2DW?;存A1的反码A3DW?;存A1的补码DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART: MOVAX,DATAMOVDS,AXMOVAX,A1NOTAXMOVA2,AXINCAXMOVA3,AXEXIT:MOVAH,4CHINT 21HCODEENDSEND START19. 答:DATASEGMENT;AT5000H ORG3481HDATDB12HDB?,?,?DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART: MOVAX,DATAMOVDS,AXMOVAL,DATNEGALMOVDAT+1,ALMOVAL,DATXORAL,00001111BMOVDAT+2,ALMOVAL,DATORAL,11110000BMOVDAT+3,ALEXIT:MOVAH,4CHINT 21HCODEENDSEND START20. 答:COUNT=1000DATASEGMENT ORG1000HDATDB10 DUP (12H,-5,-3,0,-128,56H,98H,4,128,200)ORG2000HMINDATDB?DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART: MOVAX,DATAMOVDS,AXLEASI,DATMOVCX,COUNTDECCXMOVAL,SINEXT:INCSICMPAL,SIJLEISMINMOVAL,SIISMIN:LOOPNEXTMOVMINDAT,ALEXIT:MOVAH,4CHINT 21HCODEENDSEND START21. 答:DATASEGMENT STRING1DB hELLO!COUNT1=$-STRING1STRING2DB hEL1O!COUNT2=$-STRING2IMDBMATCH$NMDBNOT MATCH$DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART: MOVAX,DATAMOVDS,AXLEASI,STRING1LEADI,STRING2MOVCX,COUNT1MOVBX,COUNT2CMPCX,BXJNZDISPNOTMATCHNEXT:MOVAL,SIMOVAH,DICMPAL,AHJNZDISPNOTMATCHINCSIINCDILOOPNEXTISMATCH:MOVDX,OFFSET IMMOVAH,9INT21HJMPEXITDISPNOTMATCH:MOVDX,OFFSET NMMOVAH,9INT21HEXIT:MOVAH,4CHINT 21HCODEENDSEND START22. 答:DSEGSEGMENT DATADB5,6,7,8DW?DATA2DB1,10,100,20DSEGENDSCODESEGMENTASSUME CS:CODE,DS:DSEGSTART: MOVAX,DSEGMOVDS,AXMOVDX,0MOVCX,4LEASI,DATALEADI,DATA2NEXT:MOVAL,DIMOVBL,SICALLDOMULADDDX,AXINCDIINCSILOOPNEXTMOVWORD PTR DATA+4,DXEXIT:MOVAH,4CHINT 21HDOMULPROCMULBLRETDOMULENDPCODEENDSEND STARTMOVCX,100MOVAX,SEG LISTMOVDS,AXMOVAX,SEGBLKMOVES,AXLEASI,LISTADDSI,CXLEADI,BLKADDDI,CXSTDREPMOVSB23. 答:24. 答:DSEGSEGMENT BUFFERDW8DB12345678DSEGENDSCODESEGMENTASSUME CS:CODE,DS:DSEGSTART: MOVAX,DSEGMOVDS,AXMOVCX,BUFFERSARCX,1LEASI,BUFFERMOVDI,SIADDDI,2AGAIN:ADDSI,2MOVAL,SIANDAL,0FHSALBYTE PTR SI+1,1SALBYTE PTR SI+1,1SALBYTE PTR SI+1,1SALBYTE PTR SI+1,1ORAL,BYTE PTR SI+1MOVDI,ALINCDILOOPAGAINEXIT:MOVAH,4CHINT 21HCODEENDSEND START25. 答:JMP SHORT LAB指令是一条双字节指令。这条指令取出后,(IP)=0102H,转移目标的偏移地址=(IP)+位移量。所以,转移目标的物理地址=(CS)16+(IP)+位移量。(1)转移目标的物理地址=(CS)16+0158H(2)转移目标的物理地址=(CS)16+0182H(3)转移目标的物理地址=(CS)16+017AH(4)转移目标的物理地址=(CS)16+01E2HDSEGSEGMENTORG10H DATDB10DB?DSEGENDSCODESEGMENTASSUME CS:CODE,DS:DSEGSTART: MOVAX,DSEGMOVDS,AXMOVAL,DATMOVBL,ALSALBL,1ADDAL,BLMOVCL,2SALBL,CLADDAL,BLMOVDAT+1,ALEXIT:MOVAH,4CHINT 21HCODEENDSEND START26. 答:27. 答:DSEGSEGMENTORG10H DATDB10H,20HDB?,?DSEGENDSCODESEGMENTASSUME CS:CODE,DS:DSEGSTART: MOVAX,DSEGMOVDS,AXMOVAL,DATMOVAH,DAT+1MOVCL,3SARAX,CLMOVDAT+2,ALMOVDAT+3,AHEXIT:MOVAH,4CHINT 21HCODEENDSEND START28. 答:DSEGSEGMENTBLOCKDW8 DUP (10H,20H,-3,-9)DSEGENDSCODESEGMENTASSUME CS:CODE,DS:DSEGSTART: MOVAX,DSEGMOVDS,AXLEASI,BLOCKMOVCX,32AGAIN:MOVAX,SICMPAX,0JNSNEXTNEGAXMOVSI,AXNEXT:INCSIINCSILOOPAGAINEXIT:MOVAH,4CHINT 21HCODEENDSEND START29. 答:DSEGSEGMENTORG3030HDATDW1234H,-1234H,?,?DSEGENDSCODESEGMENTASSUME CS:CODE,DS:DSEGSTART: MOVAX,DSEGMOVDS,AXMOVAX,DATMOVBX,DAT+2IMULBXMOVDAT+4,AXMOVDAT+6,DXEXIT:MOVAH,4CHINT 21HCODEENDSEND START第4章 习题答案1. 答:标号是指令的符号地址,可用作控制转移指令的操作数。标号具有3种属性:段属性、偏移属性和类型属性。2. 答:变量是存储单元的符号地址。变量具有3种属性:段属性、偏移属性和类型属性。3. 答:伪指令语句,也称指示性语句,是不可执行语句,汇编后不产生目标代码,它仅仅在汇编过程中告诉汇编程序如何汇编源程序。宏是一个以宏名定义的指令序列。一旦把某程序段定义成宏,则可以用宏名代替那段程序。在汇编时,要对宏进行宏展开,即把以宏名表示的地方替换为该宏对应的指令序列的目标代码。宏指令可以看成指令语句的扩展,相当于多条指令语句的集合。4. 答:汇编语言表达式中有如下运算符:算术操作符、逻辑操作符、移位操作符、关系操作符、数值回送操作符和属性操作符。操作符所完成的运算在汇编阶段进行。5. 答:略。6. 答:(1)DB1DB 10H DUP(1,2, 5 DUP(3),4)(2)DB2DBSTUDENT(3)BD3DW12H,0ABCDH(4)COUNTEQUDB2-DB17. 答:第一个OR表示该指令是OR指令,在程序运行时,该OR操作被执行。第二个OR是逻辑操作符OR,在汇编时,OR运算被执行。8. 答:(1)(AX)=1(2)(AX)=2(3)(CX)=5(4)(DX)=0AH(5)(CX)=1(6)(DX)=49. 答:略。10. 答:DSEGSEGMENTSTRING DB NEXT123DF$DSEGENDSCODESEGMENTASSUME CS:CODE,DS:DSEGSTART: MOVAX,DSEGMOVDS,AXLEASI,STRINGMOVCX,0AGAIN:MOVAL,SICMPAL,$JZNEXTINCCXINCSIJMPAGAINNEXT:MOVDX,CXMVDAT:MOVSI+2,ALDECSIMOVAL,SILOOPMVDATMOVSI+2,ALMOVWORD PTR SI,DXEXIT:MOVAH,4CHINT 21HCODEENDSEND START11. 答:DSEGSEGMENTSTRING DB It is FEB&03COUNT=$-STRINGDSEGENDSCODESEGMENTASSUME CS:CODE,DS:DSEGSTART: MOVAX,DSEGMOVDS,AXLEASI,STRINGMOVCX,COUNTAGAIN:MOVAL,SICMPAL,&JNZNEXTMOVAL, MOVSI,ALNEXT:INCSILOOPAGAINEXIT:MOVAH,4CHINT 21HCODEENDSEND START12. 答:DSEGSEGMENTBLOCK DB 4,5,-2,7,8,9,2,1,0AH,1BH,87H,23H,44H,33H,45H,28H,0DH,8EH,66H,22HCOUNT=$-BLOCKDSEGENDSCODESEGMENTASSUME CS:CODE,DS:DSEGSTART: MOVAX,DSEGMOVDS,AXLEASI,BLOCKMOVCX,COUNTAGAIN:MOVAL,SIMOVDI,SIMOVDX,CXNEXT1:CMPAL,DIJGENEXTXCHGAL,DINEXT:INCDIDECDXJNZNEXT1MOVSI,ALINCSILOOPAGAINEXIT:MOVAH,4CHINT 21HCODEENDSEND START13. 答:(3)(4)(2) (5)(1)(6) 1B50H1000H1A70H150BH上表左侧的序号,表示对
收藏
- 资源描述:
-
-/
第1章 习题答案
1.答:
为了区别所使用的数制,一般用以下两种书写格式表示:
① 用括号将数字括起,后面加数制区分,数制用下标的形式给出;
② 用后缀区分,二进制数、十进制数、八进制数、十六进制数的后缀分别为字母B(或b)、D(或d)、O(或o)或Q(或q)、H(或h)。
例如:十六进制数56.78可以表示成(56.78)16或56.78H;
十进制数56.78可以表示成(56.78)10或56.78D。
2.答:
123D采用十进制,0AFH采用十六进制,77Q采用八进制,1001110B采用二进制。
3.答:
字长为8位的二进制数原码表示的最大值:127,最小值:-127;补码表示的最大值:127,最小值:-128。
字长为16位的二进制数原码表示的最大值:32767,最小值:-32767;补码表示的最大值:32767,最小值:-32768。
4.答:
(1)125D=0111 1101B=7DH
(2) 255D=1111 1111B=FFH
(3)72D=0100 1000B=48H
(4)5090D=0001 0011 1110 0010B=13E2H
5.答:
(1)1111 0000B=240D=F0H
(2) 1000 0000 B =128D =80H
(3)1111 1111 B =255 D =FFH
(4)0101 0101B=85D=55H
6.答:
(1)FFH=255D=1111 1111B
(2) ABCDH=43947D=1010 1011 1100 1101B
(3) 123H=291D=0000 0001 0010 0011B
(4) FFFFH=65535D=1111 1111 1111 1111B
7.答:
(1)8位时(16)原=0001 0000 ; (16)补=0001 0000;
16位时(16)原=0000 0000 0001 0000 ; (16)补=0000 0000 0001 0000;
(2) 8位时(-16)原=1001 0000 ; (-16)补=1111 0000;
16位时(-16)原=1000 0000 0001 0000 ; (-16)补=1111 1111 1111 0000;
(3) 8位时(+0)原=0000 0000; (+0)补=0000 0000;
16位时(+0)原=0000 0000 0000 0000; (+0)补=0000 0000 0000 0000;
(4) 8位时(-0)原=1000 0000 ; (-0)补=0000 0000;
16位时(-0)原=1000 0000 0000 0000; (-0)补=0000 0000 0000 0000;
(5) 8位时(127)原=0111 1111; (127)补=0111 1111;
16位时(127)原=0000 0000 0111 1111; (127)补=0000 0000 0111 1111;
(6) 8位时-128超过原码表示的范围; (-128)补=1000 0000;
16位时(-128)原=1000 0000 1000 0000; (-128)补=1111 1111 1000 0000;
(7) 8位时(121)原=0111 1001 ; (121)补=0111 1001;
16位时(121)原=0000 0000 0111 1001; (121)补=0000 0000 0111 1001;
(8) 8位时(-9)原=1000 1001 ; (-9)补=1111 0111;
16位时(-9)原=1000 0000 0000 1001; (-9)补=1111 1111 1111 0111;
8.答:
(1) [x]补=1100 0010;(2)[-x]补=0000 1101;(3)[x]原=1100 0010;(4)[x]反=1011 1101。
9.答:
(1)A>B;(2)A<B
10.答:
(1)溢出;(2)13H;(3)溢出;(4)EDH;(5)EDH。
11.答:
(1)1000 1000;(2)1110 1110;(3)0110 0110;(4)1010 1100;
(5)0000 0000;(6)1010 1100;(7)=0101 0011。
12.答:
(1)30H=48,字符为‘0’;(2)39H=57,字符为‘9’;(3)42H=66,字符为‘B’;
(4)62H=98,字符为‘b’;(5)20H=32,字符为空格;(6)7H=7,字符为报警符;
13、答:
十进制
49
123
7
62
压缩BCD码
0100 1001B
0001 0010 0011B
0000 0111B
0110 0010B
非压缩BCD码
0000 0100 0000 1001B
0000 0001 0000 0010 0000 0011B
0000 0111B
0000 0110 0000 0010B
ASCII码
3439H
313233H
37H
3632H
第2章 习题答案
1.(1)答:
物理地址:物理地址(PA)是20位无符号二进制数,是CPU访问存储器的实际地址。每个存储单元对应一个物理地址。8086存储空间的物理地址范围是:00000H~FFFFFH。
逻辑地址:采用分段结构的存储器中,把通过段地址和偏移地址来表示的存储单元的地址称为逻辑地址,记为:段地址:偏移地址。
段地址:8086规定各逻辑段从节的整数边界开始,即段首地址二进制值的低4位是0000,把段首地址的高16位称为段基址或段地址。
偏移地址:把某一存储单元相对于段地址的段内偏移量称为偏移地址(也称有效地址EA)。段地址和偏移地址都是是16位无符号二进制数。
(2)答:
时钟周期:计算机的“时钟”是由振荡源产生的、幅度和周期不变的节拍脉冲,每个脉冲周期称为时钟周期,又称为T状态或T周期,时钟周期是微机系统工作的最小时间单元。
总线周期:当CPU访问存储器或输入/输出端口时,需要通过总线进行读或写操作,这个过程称为总线周期(Bus Cycle)。总线周期是利用总线完成一次读/写所需要的时间。
指令周期:执行一条指令所需要的时间称为指令周期(Instruction Cycle)。指令周期由1个或多个总线周期组成。
(3)答:
最小模式:也称为单处理器模式,是指系统中只有一片8086微处理器,所连接的存储器容量不大、片子不多,所要连接的I/O端口也不多,系统的控制总线就直接由CPU的控制线供给,从而使得系统中的总线控制电路减到最少。最小模式适用于较小规模的系统。
最大模式:相对于最小模式而言,适用于中、大型规模的系统。系统中有多个微处理器,其中一个是主处理器8086,其他的处理器称为协处理器,承担某方面专门的工作。需要增加一片8288来对8086CPU发出的控制信号进行变换和组合,以得到对存储器或I/O端口的读/写信号和对锁存器、总线收发器的控制信号。
2.答:
EU:负责指令的执行,即从总线接口部件BIU的指令队列取指令,指令执行后向BIU送回运算结果,同时把运算结果的状态特征保存到标志寄存器中。
BIU:负责CPU与存储器、I/O设备之间的数据传送。BIU完成以下操作:取指令送给指令队列、配合执行部件从指定的内存单元或者外设端口中取数据、将数据传送给执行部件或者把执行部件的操作结果传送到指定的内存单元或外设端口中。
8086的BIU和EU在很多时候可以并行工作,使得取指令、指令译码和执行指令这些操作构成操作流水线。
① 当指令队列中有两个空字节,且EU没有访问存储器和I/O接口的要求时,BIU会自动把指令取到指令队列中。
② 当EU准备执行一条指令时,它会从指令队列前部取出指令执行。在执行指令的过程中,如果需要访问存储器或者I/O设备,那么EU会向BIU发出访问总线的请求,以完成访问存储器或者I/O接口的操作。如果此时BIU正好处于空闲状态,那么,会立即响应EU的总线请求;但如果BIU正在将某个指令字节取到指令队列中,那么,BIU将首先完成这个取指令操作,然后再去响应EU发出的访问总线的请求。
③ 当指令队列已满,而且EU又没有总线访问时,BIU便进入空闲状态。
④ 在执行转移指令、调用指令和返回指令时,下面要执行的指令就不是在程序中紧接着的那条指令了,而BIU往指令队列装入指令时,总是按顺序进行的。在这种情况下,指令队列中已经装入的指令就没有用了,会被自动消除。随后,BIU会往指令队列中装入另一个程序段中的指令。
3.答:
地址信号是CPU发送给内存或I/O设备的,所以地址线是单向的;
数据信号可以从CPU发送给内存或I/O设备,也可以从内存或I/O设备发送给CPU,故而数据线是双向的。
4.答:
8086CPU中有14个寄存器。它们是:4个16位的通用寄存器:AX、BX、CX、DX和8个8位的通用寄存器:AH、AL、BH、BL、CH、CL、DH、DL;指针和变址寄存器SP、BP、 SI、DI;4个16位的段寄存器CS、DS、SS和ES;标志寄存器FR;指令指针寄存器IP。
功能略。
5.答:
(1)加法运算的结果为:CEACH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=1;
(2)加法运算的结果为:68ACH;CF=0,PF=1,AF=0,ZF=0,SF=0,OF=0;
(3)加法运算的结果为:DDDDH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=0。
6.答:
8086CPU可寻址的存储器地址范围是00000H~FFFFFH;
可寻址的I/O端口地址范围是0000H~FFFFH。
7.答:
由于8086CPU提供20位地址,但8086中可用来存放地址的寄存器,如IP、SP、BX、SI等都是16位的,只能直接寻址64KB。为了寻址1MB存储空间,8086CPU采用了典型的存储器分段技术,即将整个存储器空间分为许多逻辑段,每个逻辑段的容量小于或等于64KB。分段后,对存储器的寻址操作不再直接用20位的物理地址,而是采用段地址加段内偏移地址的二级寻址方式。
8.答:
将AH的内容送存储单元的操作过程中:;
将I/O端口的内容送AL的操作过程中:。
9.答:
A0
有效的数据引脚
操 作
0 0
AD15~AD0(一个总线周期同时访问奇体和偶体,从奇地址单元读/写字数据的高8位,从偶地址单元读/写字数据的低8位)
从偶地址读/写一个字
1 0
AD7~AD0
从偶地址读/写一个字节
0 1
AD15~AD8
从奇地址读/写一个字节
0 1
1 0
AD15~AD8(第一个总线周期从奇字数据的低8位)
AD7~AD0(第二个总线周期从偶地址单元读/写字数据的高8位)
从奇地址读/写一个字
10.答:
8086系统复位后,指令指针(IP)为0000H;CS寄存器为FFFFH,其他寄存器为0000H;指令队列清空。
11.答:
8086的A19/S6~A16/S3和AD15~AD0是复用信号,需要地址锁存器将地址信息保存起来,为外接存储器或外设提供地址信息。
需要锁存的信号是:地址信号及信号。
12.答:
8086CPU一个基本的总线周期包含4个时钟周期:T1、T2、T3和T4 。
在T1状态,有效,指示CPU访问的是存储器还是外设,之后CPU往多路复用总线上发出地址信息,以指出要寻址的存储单元或外设端口的地址。在T1状态,CPU还必须在ALE引脚上输出一个正脉冲作为地址锁存信号。信号也在T1状态送出,它用来表示数据传送的字宽。
在T2状态,CPU从总线上撤销地址,使总线的低16位浮空,置成高阻状态,为传输数据作准备。总线的最高4位(A19~A16)用来输出本总线周期的状态信息。读信号或写信号在T2状态变为有效,指示CPU将进行哪种操作(读或写)。
在T3状态,多路总线的高4位继续提供状态信息,而多路总线的低16位上出现由CPU读出的数据或者CPU从存储器或端口写入的数据。
在T4状态和前一个状态的交界处,CPU对数据总线进行采样,获得数据,总线周期结束。
13.答:
在有些情况下,外设或存储器速度较慢,不能及时地配合CPU传送数据。这时,外设或存储器会通过“READY”信号线在T3状态启动之前向CPU发一个“数据未准备好”信号,于是CPU会在T3之后插入1个或多个附加的时钟周期TW。取决与外设或存储器速度。
14.答:
两种操作时序的不同之处发生在T1和T2状态。
① 在T1状态,读周期:应输出低电平;写周期:应输出高电平。
② 在T2状态,读周期:有效,而无效,AD15~AD0为高阻态;写周期:变为无效,而写信号变为有效,AD15~AD0在地址撤销之后立即送出要写入存储器或外设端口的数据。
15.答:
在最小模式下,读信号、ALE和、等信号直接由CPU给出;
在最大模式下,总线控制器8288根据和状态信号产生读信号和,ALE和、DEN也是由8288发出的,而且DEN信号的极性与CPU在最小模式下发出的信号正好相反。
第3章 习题答案
1.答:
指令中关于如何求出操作数有效地址的方法称为寻址方式。
8086CPU支持多种寻址方式,根据操作数的类型及来源大致分为3类:数据寻址、转移地址寻址和I/O寻址。
2.答:
8086汇编指令可以采用7种基本的数据寻址方式:①立即寻址;②寄存器寻址;③直接寻址;④寄存器间接寻址;⑤寄存器相对寻址;⑥基址变址寻址;⑦相对基址变址寻址。
与存储器寻址方式(后5种)相比,寄存器寻址方式最快。
3.答:
如果指令中没有用前缀说明操作数存放在哪个段,则操作数默认存放在数据段。
8086系统允许操作数存放在代码段、堆栈段或附加段。此时,就需要在指令中利用前缀指明段超越。例如:
MOV ES:[1225H],AX
4.答:
(1)寄存器寻址方式
(2)寄存器间接寻址方式,PA=10300H
(3)寄存器间接寻址方式,PA=20200H
(4)直接寻址方式,PA=10060H
(5)基址变址寻址方式,PA=10500H
(6)相对基址变址寻址方式,PA=12300H
(7)直接寻址方式,PA=11000H
(8)寄存器相对寻址方式,PA=10306H
(9)直接寻址方式,PA=10065H
5.答:
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
√
√
√
6.答:
(1)源操作数的寻址方式不同。MOV AX,3000H指令的源操作数采用的是立即数寻址方式,MOV AX,[3000H]指令的源操作数采用的是直接寻址方式。
(2)指令执行后,AX的值不同。MOV AX,MEM指令执行后,AX得到的是MEM单元的内容,而MOV AX,OFFSET MEM指令执行后,AX得到的是MEM单元的地址。
(3)指令不同。MOV AX,MEMMOV AX,MEM指令执行后,AX得到的是MEM单元的内容,而LEA AX,MEM指令执行后,AX得到的是MEM单元的地址。
(4)转移的类型不同。JMP SHORT L1指令实现的是段内转移,而JMP NEAR PTR L1指令实现的是段间转移。
(5)指令的执行结果不同。CMP DX,CX指令执行后,DX的值不变,而SUB DX,CX指令执行后,DX的值是两寄存器值的差。
(6)操作数所在段不同。MOV [BP][SI],CL指令访问的是堆栈段的存储单元,而MOV DS:[BP][SI],CL指令访问的是数据段的存储单元。
7.答:
(1)MOV BYTE PTR [BP],200指令执行后,(58200H)=200H
(2)MOV WORD PTR [BX],2000指令执行后,(22400H)=2000H
8.答:
当前栈顶地址是:FE00H:2010H;
执行PUSH BX指令后,栈顶地址变为:FE00H:200EH,栈顶2字节内容是:3457H。
9.答:
(1)(DX)=3C62H,CF=1
(2)(DX)=03C6H,CF=0
(3)(DX)=18A0H,CF=1
(4)(DX)=2BC6H,CF=0
(5)(DX)=18B7H,CF=1
(6)(DX)=BCC5H,CF=0
10.答:
(AX)
CF
ZF
OF
SF
PF
(1)
134EH
0
0
0
0
1
(2)
0821H
0
0
0
0
1
(3)
F142H
1
0
0
1
1
(4)
0A69
1
0
0
1
1
(5)
F596
-
-
-
-
-
(6)
0A69
0
0
0
0
1
11.答:
(1) CMP CX,DX
JA NEXT
(2)CMP AX,BX
JNA NEXT
(3)CMP DX,0
JZ NEXT
(4)CMP CX,DX
JBE NEXT
12.答:
(1) 程序转向L1。
(2) 程序转向L1。
(3) 程序转向L2。
(4) 程序转向L5。
(5) 程序转向L5。
13.答:
因为普通运算指令执行的是二进制数的运算,而BCD码是十进制数,所以,需要对运算结果进行十进制调整。
在做BCD码的加、减和乘法运算时,十进制调整指令放在运算指令之后;而作BCD码的除法运算时,在运算指令之前用十进制调整指令对被除数进行调整。
14.答:
MOV Cl,3
SHR bx,cl
15.答:(略)
16.答:
DATA SEGMENT
COUNT=100H
ORG 1000H
D_DATA DB COUNT DUP(?)
ORG 2170H
S_DATA DB COUNT/5 DUP(1,2,3,4,5)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA SI,S_DATA
LEA DI,D_DATA
MOV CX,COUNT
REP MOVSB
MOV AL,1
MOV CX,COUNT
LEA DI,D_DATA
AGAIN:
CMP BYTE PTR [DI],AL
JNZ NEXT
MOV BYTE PTR [DI],
NEXT:
INC DI
LOOP AGAIN
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
17.答:
CODE SEGMENT
ASSUME CS:CODE
START:
MOV AX,5678H
MOV DX,1234H
NOT AX
NOT DX
ADD AX,1
ADC DX,0
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
18. 答:
;本程序未考虑溢出的情况。
DATA SEGMENT
A1 DW 5050H
A2 DW ? ;存A1的反码
A3 DW ? ;存A1的补码
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,A1
NOT AX
MOV A2,AX
INC AX
MOV A3,AX
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
19. 答:
DATA SEGMENT ;AT 5000H
ORG 3481H
DAT DB 12H
DB ?,?,?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,DAT
NEG AL
MOV DAT+1,AL
MOV AL,DAT
XOR AL,00001111B
MOV DAT+2,AL
MOV AL,DAT
OR AL,11110000B
MOV DAT+3,AL
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
20. 答:
COUNT=1000
DATA SEGMENT
ORG 1000H
DAT DB 10 DUP (12H,-5,-3,0,-128,56H,98H,4,128,200)
ORG 2000H
MINDAT DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI,DAT
MOV CX,COUNT
DEC CX
MOV AL,[SI]
NEXT: INC SI
CMP AL,[SI]
JLE ISMIN
MOV AL,[SI]
ISMIN:
LOOP NEXT
MOV MINDAT,AL
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
21. 答:
DATA SEGMENT
STRING1 DB hELLO!
COUNT1=$-STRING1
STRING2 DB hEL1O!
COUNT2=$-STRING2
IM DB MATCH$
NM DB NOT MATCH$
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI,STRING1
LEA DI,STRING2
MOV CX,COUNT1
MOV BX,COUNT2
CMP CX,BX
JNZ DISPNOTMATCH
NEXT:
MOV AL,[SI]
MOV AH,[DI]
CMP AL,AH
JNZ DISPNOTMATCH
INC SI
INC DI
LOOP NEXT
ISMATCH:
MOV DX,OFFSET IM
MOV AH,9
INT 21H
JMP EXIT
DISPNOTMATCH:
MOV DX,OFFSET NM
MOV AH,9
INT 21H
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
22. 答:
DSEG SEGMENT
DATA DB 5,6,7,8
DW ?
DATA2 DB 1,10,100,20
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV DX,0
MOV CX,4
LEA SI,DATA
LEA DI,DATA2
NEXT:
MOV AL,[DI]
MOV BL,[SI]
CALL DOMUL
ADD DX,AX
INC DI
INC SI
LOOP NEXT
MOV WORD PTR DATA+4,DX
EXIT:
MOV AH,4CH
INT 21H
DOMUL PROC
MUL BL
RET
DOMUL ENDP
CODE ENDS
END START
MOV CX,100
MOV AX,SEG LIST
MOV DS,AX
MOV AX,SEG BLK
MOV ES,AX
LEA SI,LIST
ADD SI,CX
LEA DI,BLK
ADD DI,CX
STD
REP MOVSB
23. 答:
24. 答:
DSEG SEGMENT
BUFFER DW 8
DB 12345678
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV CX,BUFFER
SAR CX,1
LEA SI,BUFFER
MOV DI,SI
ADD DI,2
AGAIN:
ADD SI,2
MOV AL,[SI]
AND AL,0FH
SAL BYTE PTR [SI+1],1
SAL BYTE PTR [SI+1],1
SAL BYTE PTR [SI+1],1
SAL BYTE PTR [SI+1],1
OR AL,BYTE PTR [SI+1]
MOV [DI],AL
INC DI
LOOP AGAIN
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
25. 答:
JMP SHORT LAB指令是一条双字节指令。这条指令取出后,(IP)=0102H,转移目标的偏移地址=(IP)+位移量。所以,转移目标的物理地址=(CS)╳16+(IP)+位移量。
(1)转移目标的物理地址=(CS)╳16+0158H
(2)转移目标的物理地址=(CS)╳16+0182H
(3)转移目标的物理地址=(CS)╳16+017AH
(4)转移目标的物理地址=(CS)╳16+01E2H
DSEG SEGMENT
ORG 10H
DAT DB 10
DB ?
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV AL,DAT
MOV BL,AL
SAL BL,1
ADD AL,BL
MOV CL,2
SAL BL,CL
ADD AL,BL
MOV DAT+1,AL
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
26. 答:
27. 答:
DSEG SEGMENT
ORG 10H
DAT DB 10H,20H
DB ?,?
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV AL,DAT
MOV AH,DAT+1
MOV CL,3
SAR AX,CL
MOV DAT+2,AL
MOV DAT+3,AH
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
28. 答:
DSEG SEGMENT
BLOCK DW 8 DUP (10H,20H,-3,-9)
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
LEA SI,BLOCK
MOV CX,32
AGAIN:
MOV AX,[SI]
CMP AX,0
JNS NEXT
NEG AX
MOV [SI],AX
NEXT:
INC SI
INC SI
LOOP AGAIN
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
29. 答:
DSEG SEGMENT
ORG 3030H
DAT DW 1234H,-1234H,?,?
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV AX,DAT
MOV BX,DAT+2
IMUL BX
MOV DAT+4,AX
MOV DAT+6,DX
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
第4章 习题答案
1. 答:
标号是指令的符号地址,可用作控制转移指令的操作数。
标号具有3种属性:段属性、偏移属性和类型属性。
2. 答:
变量是存储单元的符号地址。
变量具有3种属性:段属性、偏移属性和类型属性。
3. 答:
伪指令语句,也称指示性语句,是不可执行语句,汇编后不产生目标代码,它仅仅在汇编过程中告诉汇编程序如何汇编源程序。
宏是一个以宏名定义的指令序列。一旦把某程序段定义成宏,则可以用宏名代替那段程序。在汇编时,要对宏进行宏展开,即把以宏名表示的地方替换为该宏对应的指令序列的目标代码。宏指令可以看成指令语句的扩展,相当于多条指令语句的集合。
4. 答:
汇编语言表达式中有如下运算符:算术操作符、逻辑操作符、移位操作符、关系操作符、数值回送操作符和属性操作符。
操作符所完成的运算在汇编阶段进行。
5. 答:
略。
6. 答:
(1)DB1 DB 10H DUP(1,2, 5 DUP(3),4)
(2)DB2 DB STUDENT
(3)BD3 DW 12H,0ABCDH
(4)COUNT EQU DB2-DB1
7. 答:
第一个OR表示该指令是OR指令,在程序运行时,该OR操作被执行。
第二个OR是逻辑操作符OR,在汇编时,OR运算被执行。
8. 答:
(1)(AX)=1
(2)(AX)=2
(3)(CX)=5
(4)(DX)=0AH
(5)(CX)=1
(6)(DX)=4
9. 答:略。
10. 答:
DSEG SEGMENT
STRING DB NEXT123DF$
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
LEA SI,STRING
MOV CX,0
AGAIN:
MOV AL,[SI]
CMP AL,$
JZ NEXT
INC CX
INC SI
JMP AGAIN
NEXT:
MOV DX,CX
MVDAT:
MOV [SI]+2,AL
DEC SI
MOV AL,[SI]
LOOP MVDAT
MOV [SI]+2,AL
MOV WORD PTR [SI],DX
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
11. 答:
DSEG SEGMENT
STRING DB It is FEB&03
COUNT=$-STRING
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
LEA SI,STRING
MOV CX,COUNT
AGAIN:
MOV AL,[SI]
CMP AL,&
JNZ NEXT
MOV AL,
MOV [SI],AL
NEXT:
INC SI
LOOP AGAIN
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
12. 答:
DSEG SEGMENT
BLOCK DB 4,5,-2,7,8,9,2,1,0AH,1BH,87H,23H,44H,33H,45H,28H,0DH,8EH,66H,22H
COUNT=$-BLOCK
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
LEA SI,BLOCK
MOV CX,COUNT
AGAIN:
MOV AL,[SI]
MOV DI,SI
MOV DX,CX
NEXT1:
CMP AL,[DI]
JGE NEXT
XCHG AL,[DI]
NEXT:
INC DI
DEC DX
JNZ NEXT1
MOV [SI],AL
INC SI
LOOP AGAIN
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
13. 答:
(3)
(4)(2) (5)(1)
(6)
1B50H
1000H
1A70H
150BH
上表左侧的序号,表示对
展开阅读全文