微型计算机原理(第二版)王忠民 主编 之《课后练习题解答》
2008年06月27日 星期五 下午 03:37
第五章 汇编语言程序设计
1.画图说明下列语句所分配的存储空间及初始化情况。
(1)42H 59H 54H 45H 00H EEH 00H 07H 01H 02H 01H 02H 07H 00H 07H 01H 02H 01H 02H 07H 00H 07H 01H 02H 01H 02H 07H
(2)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 00H 07H 00H FBH FFH 59H 42H 45H 54H 02H 56H
2.(PLENTH)=22H;它表示数据与的长度
3.(L)=06H
4.(1)MOV BX OFFSET LNAME
(2)MOV SI WORD PTR CODE_LIST
(3)MOV CODE_LENGTH EQU $-CODE_LIST
5.(AX)=10
(BL)=10
(CL)=1
6.(1).(AX)=1
(2).(AX)=2
(3).(CX)=20
(4).(DX)=40
(5).(CX)=1
7.是说明下列指令中那些需要加上PR伪指令定义符。
(1).不需要(2)不需要(3)SUB ,WORD BYTE 2(或其他形式)(4).MOV CL,BYTE PTR
WVAL
8.编一宏定义BXCHG,将一字节高4位和低4位交换。
BXCHG MARCO OPR
MOV AL ,OPR
MOV CL,04H
ROL AH,CL
ROR AL,CL
OR AH , AL
MOV OPR,AH ENDM
9.已知宏定义,展开宏调用:OPP BH,BL,CH,CL
+MOV AX,BX
+XCHG AL,CL
+MOV AX,BL
+XCHG AL,CH
+MOV BL,AL
10.将寄存器中的16位数分成四组,每组四位,分别存放在AL,BL,CL和DL中。
MOV CH,04H
MOV CL,AL
MOV DL,AL
SHR CL,CH
AND DL,AH
MOV AL,AH
MOV BL,AH
SHR AL,CH
AND BL,0FH
11.试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示MATCH,若不相同则显示NOMATCH.
解:DATA SEGMENT
STRING1 DB ‘ABCDE’
STRING2 DB ‘ABCDEF’
MESG1 DB ‘MATCH$’
MESG2 DB ‘MATCH$’
DATA ENDS
STACK SEGMENT
BUF DB 100DUP(?)
STACK ENDS
CODE SEGMENT
MAIN PROC FAR
START:PUSH DS
MOV AX,0
PUSH AX
PUSH ES
MOV AX,DATA
MOV DS,AX
MOV AL,STRING1
MOV CL,6
MOV SI,OFFSET STRING1
MOV DI,OFFSET STRING2
CLD
REPE CMPSB
JZ ALLMATCH
MOV DX OFFSET MESG2
MOV AH,9
INT 21H RET
ALLMATCH: MOV DX OFFSET MESG1
MOV AH 9
MOV 21H RET
MAIN ENDP
CODE ENDS
END START
13.编写程序,将一个包含有20个数据的数组M分成两个数组,正数组P和负数组,分别把这两个数组中的数据的个数显示出来。
解:DATA SEGMENT
M DB 1 ,2,3,4,5,6,7,8,9,10
DB -1,-2,-3,-4,-5,-6,-7,-8,-9,-10
P DB 20DUP(?)
N DB 20DUP(?)
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
START:PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AL,0
MOV SI OFFSET M
MOV CX 20H
LOOP1: MOV BL,M[SI][SI
JAE LOOP2
MOV N,BL
INC SI
CMP CX,20H
JZ LOOP3
JMP LOOP1
LOOP2: DEC CX