微机原理与接口技术第四章
- 格式:ppt
- 大小:356.50 KB
- 文档页数:83
第四章参考答案1.设下列指令中的所有标识符均是类型属性为字的变量,请指出下列指令中哪些是非法的指令?错误的原因?⑴MOV BP,AL⑵MOV WORD_OP1,WORD_OP2⑶MOV SA VE_WODR,DS⑷MOV SP,SS:DA TA_WORD[BX][SI]⑸MOV [BX][SI],2解:(1)非法。
源操作数与目的操作数类型不符。
(2)合法。
(3)合法。
(4)合法。
(5)非法。
需说明操作数类型。
2.设V AR1和V AR2为字变量,LAB为标号,试指出下列指令的错误之处:⑴ADD V AR1,V AR2⑵SUB AL,V AR1⑶JMP LAB[SI]⑷JNZ V AR1⑸JMP NEAR LAB解:(1)两个操作数均为符号地址。
(2)两个操作数的类型不同。
(3)(4)(5)3.画图说明下列语句所分配的存储空间及初始化的数据值。
⑴BYTE_V AR DB ‘BYTE’,12,-12H,3 DUP(0,?,2 DUP(1,2),?)⑵WORD_V AR DW 5 DUP(0,1,2),?,-5 ‘BY’,’TE’,256H解:(1)(2)41H59H54H45H0CHF4H00H?01H02H01H02H00H?01H02H01H02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H ??FBH FFH 59H 42H 45H 54H 56H 02H4.设程序中的数据定义如下:PARTNO DW ?PNAME DB 16 DUP(?)COUNT DD ?PLENTH EQU $-PARTNO问PLENTH的值为多少?它表示什么意义?解:PLENTH的值为22(16H)。
表示当前位置与PARTNO之间有22个字节空间。
微机原理、汇编语言与接口技术-第四章-习题答案-人民邮电出版社-(周杰英-张萍-郭雪梅-著)第4章汇编语言程序设计习题与参考答案1、指出以下数据定义伪指令所分配的字节数(8086系统)。
(1)DATA1 DB 10,?,‘A’(2)DATA2 DW 10 DUP(2,3 DUP(?),1)(3)DATA3 DB ‘HELLO,WORLD!’,‘$’(4)DATA4 DW D ATA4解:(1)3字节;(2)100字节;(3)13字节;(4)2字节。
2、指出以下数据定义伪指令所分配的字节数(80386系统)。
(1)DATA1 DF 12,34,56(2)DATA2 DF D ATA2(3)DATA3 DQ 0,10 DUP(?)(4)DATA4 DT 0,1,2解:(1)18字节;(3)6字节;(3)88字节;(4)30字节。
3、指出以下指令中哪些是无效的,并说明原因。
(1)ADDR DB $(2)DATA DB F0H,12H(3)1_DATA DW 1234H(4)@VAR DW V AR1 ;VAR1为一个字节变量(5)MOV AX,[10-VAR1] ;VAR1为一个字变量(6)MOV BX,[VAR2*2+1] ;VAR2为一个字变量解:(1)非法,地址计数器$是32位数;(2)非法,以字母开头的16进制数应在前面加“0”,即应为“0F0H”;(3)非法,变量名非法,不能以数字开头;(4)合法;(5)非法,地址表达式不能是“常数-地址”;(6)非法,地址表达式不能出现乘法。
4、假设已定义数据段如下:DATA SEGMENTORG 100HDATA1 DB 10 DUP(1,2,3)DATA2 DW DATA1,$DATA ENDS且段寄存器DS已初始化为该数据段的段基址(假设段基址为1234H)。
请指出以下指令执行后,相应的寄存器中的内容。
(1)MOV AX,WORD PTR DATA1 ;(AX)=?(2)MOV BX,DATA2 ;(BX)=?(3)MOV CX,DATA2+2 ;(CX)=?(4)MOV DX,OFFSET DATA2 ;(DX)=?(5)MOV SI,SEG DATA1 ;(SI)=?(6)MOV DI,LENGTH DATA1 ;(DI)=?(7)MOV SP,TYPE DATA1 ;(SP)=?(8)MOV BP,SIZE DATA2 ;(BP)=? 解:(注意是16进制,算的时候要转换) (1)(AX)=0201H;(2)(BX)=0100H;(3)(CX)=0120H;(4)(DX)=011EH;(5)(SI)=1234H;(6)(DI)=000AH;(7)(SP)=0001H;(8)(BP)=0002H。
第四章习题参考答案教材上的习题P205 1 解:A1 - 4字节,A2 - 6字节,A3 - 40字节,A4 - 60字节P205 4 解:PAR偏移地址为0, PLENTH 当前偏移地址$=2+16+4=22,$-PAR=22,故PLENTH的值为22P205 5 解:AX=1,BX=20,CX=1P206 6 解: 应讨论最高位为1和0的情况。
如输入最高位为1,AH=0;输入最高位为0,AH=0FFH。
IN AL,5FH ;假如输入后AL=45HTEST AL,80H ;执行01000101 AND 10000000后ZF=1,AL=00HJZ L1 ;ZF=1,转到L1MOV AH,0JMP STOPL1: MOV AH,0FFH ;结果AH=0FFHSTOP: HALT补充题阅读程序并完成填空(1) ADDR1开始的单元中连续存放两个双字数据,求其和,并将和存放在ADDR2开始的单元(假定和不超过双字)MOV CX,2XOR BX,BXCLCNEXT: MOV AX,[ADDR1+BX]ADC AX,MOV [ADDR2+BX],AXINC BXNEXT解:[ADDR1+BX+4]INC BXLOOP(2)在数据段ADDR1地址处有200个字节数据,要传送到数据段地址ADDR2处。
MOV AX, SEG ADDR1MOV DS, AXMOV ES,MOV SI,MOV DI, OFFSET ADDR2MOV ,200CLDREP解:AXOFFSET ADDR1CXMOVSB(3)已知有某字串BUF1的首地址为2000H, 数据段与附加段重合。
欲从BUF1处开始将20个字数据顺序传送至BUF2处。
(假设BUF1和BUF2有地址重叠)LEA SI, BUF1ADD SI,LEA DI, BUF2STDMOV CX,REP MOVSW解:38ADD DI, 3820(4)设有一个首地址为ARRAY,有N个字数据的数组,要求求出该数组之和,并把结果存入TOTAL地址中。
微机原理与接口技术(楼顺天第二版)习题解答第4章汇编语言程序设计4。
1、已知在BUF的起始处保存有N个字符的ASCII码,编写汇编语言程序实现,将这组字符串传送到缓冲区BUFR中,并且使字符串的顺序与原来的顺序相反。
答:BUF D B ”BONJOUR_BELLE"BUFR DB 100 DUP(?)MOV CX, NLEA SI, BUFLEA DI, BUFRADD DI,CXDEC DIL1:MOV AL,[SI]MOV [DI],ALINC SIDEC DILOOP L14。
2、利用移位、传送和相加指令实现AX的内容扩大10倍.答:将扩大后的结果放在DX:AX中,注意到10×AX=8×AX+2×AX。
XOR DX,DXSHL AX,1RCL DX,1MOV BX,AXMOV CX,DXSHL AX,1RCL DX, 1SHL AX, 1RCL DX, 1ADD AX, BXADC DX, CX4。
3、在缓冲区V AR中连续存放着3个16位的无符号数,编写程序实现将其按递增关系排列;如果V AR中保存的为有符号数,则再编写程序实现将其按递减关系排列。
答:V AR DW 1236,-432,3900XOR SI,,SIMOV AX,V AR[SI]CMP AX,V AR[SI+2]JAE L1XCHG AX,V AR[SI+2]L1:CMP AX, V AR[SI+4]JAE L2XCHG AX, V AR[SI+4]L2:MOV V AR[SI],AXMOV AX,V AR[SI+2]CMP AX,V AR[SI+4]JAE L3XCHG AX,V AR[SI+4]L3:MOV V AR[SI+2], AX4。
4、编写程序段实现将AL和BL中的每一位依次交叉,得到的16位字保存在DX中,例如(AL)=01100101B,(BL)=11011010B,则得到的(DX)=10110110 10011001B。
第四章1. 下列变量各占多少字节?A1 DW 23H,5876HA2 DB 3 DUP(?),0AH,0DH, ‘$’A3 DD 5 DUP(1234H, 567890H)A4 DB 4 DUP(3 DUP(1, 2,’ABC’))答:A1占4个字节A2占6个字节A3占40个字节A4占60个字节2. 下列指令完成什么功能?MOV AX,00FFH AND 1122H+3344HMOV AL,15 GE 1111BMOV AX,00FFH LE 255+6/5AND AL, 50 MOD 4OR AX, 0F00FH AND 1234 OR 00FFH答:(1)将0066H传送给AX(2)将0FFH传送给AL(3)将0FFFFH传送给AX(4)AND AL,02H(5)OR AX,00FFH3. 有符号定义语句如下:BUF DB 3,4,5,’123’ABUF DB 0L EQU ABUF-BUF求L的值为多少?答:L=64. 假设程序中的数据定义如下:PAR DW ?PNAME DB 16 DUP(?)COUNT DD ?PLENTH EQU $-PAR求PLENTH的值为多少?表示什么意义?答:PAR的偏移地址为0,PLENTH当前偏移地址$=2+16+4=22, $-PAR=22,故PLENTH 的值为22。
若在PLENTH所在行有变量定义,则$表示该变量的偏移地址,即$表示PLENTH所在行的当前偏移地址。
故PLENTH表示从当前行到PAR之间定义的变量所占的字节个数。
5. 对于下面的数据定义,各条MOV指令执行后,有关寄存器的内容是什么?DA1 DB ?DA2 DW 10 DUP(?)DA3 DB ‘ABCD’MOV AX, TYPE DA1MOV BX, SIZE DA2MOV CX, LENGTH DA3答:AX=1,BX=20,CX=16. 下段程序完成后,AH等于什么?IN AL, 5FHTEST AL, 80HJZ L1MOV AH, 0JMP STOPL1: MOV AH, 0FFHSTOP: HLT答:讨论从端口5FH输入的数据最高位的情况。
“微机系统原理与接口技术”第四章习题解答1.判断以下说法是否正确,如有错,请说明原因并改正。
(1)伪指令在汇编过程中不会产生二进制代码。
(2)宏和过程的相同之处是都可用于简化源程序书写、精简目标代码。
(3)在计算机中,高级语言通常需要转换为汇编语言后才能执行。
(4)汇编语言程序上机一般包括编辑、汇编、链接和调试几个步骤。
答:(1)正确。
(2)错误。
宏不能精简目标代码。
(3)错误。
高级语言程序经编译或解释后直接转换为目标代码。
(4)正确。
2.已知数据和符号定义A1 DB ?A2 DB 8K1 EQU 100判断下列指令的正误,并说明错误指令的原因。
(1)MOV K1,AX(2)MOV A2,AH(3)MOV BX,K1MOV [BX],DX(4)CMP A1,A2(5)K1 EQU 200答:(1)错误。
K1是符号常数,在此处相当于立即数100,故不能做目的操作数。
(2)正确。
(3)正确。
(4)错误。
A1、A2都是字节变量,相当于两个存储器单元,故不能同时出现在一条指令中直接进行比较。
(5)错误。
用EQU定义的符号不能重新赋值,除非已用PURGE解除了原值。
3.若数据段中有定义NUM1 EQU 23HNUM2 DW 0则指令MOV NUM2,NUM1 的源、目操作数的寻址方式以及指令执行后NUM2+1单元的内容分别是什么?答:指令MOV NUM2,NUM1的源操作数使用立即数寻址,目的操作数使用直接寻址。
指令执行后NUM2+1单元的内容是0。
4.设DS=6000H,BX=8432H,SS=5000H,SP=3258H,内存69632H~69635H单元的内容依次是00H、11H、22H、33H。
4字节指令CALL DWORD PTR [BX+1200H] 本身位于2000H:3250H处的双字单元中。
当8086执行该指令后转移至子程序入口时,CS、IP、SS、SP各寄存器以及栈顶2个字单元的内容分别是多少?答:执行结果为CS=3322H,IP=1100H,SS=5000H,SP=3254H,栈顶的两个字即断点地址,为2000H:3254H。