微型计算机原理课后答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微型计算机原理(第二版)王忠民 主编 之《课后练习题解答》 第五章 汇编语言程序设计 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 [BX],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
解: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] CMP AL,M[SI JAE LOOP2 MOV N,BL INC SI CMP CX,20H JZ LOOP3 JMP LOOP1 LOOP2: DEC CX MOV P, BL INC SI CMP CX,20H JZ LOOP3 JMP LOOP1 LOOP3: MOV DX,OFFSET P MOV AH,9 INT 21H MOV DX,OFFSET N MOV AH, 9 INT 21H RET MAIN ENDP CODE ENDS END START 20.编写程序,求字节变量 BVAR 中的压缩 BCD 数转换为二进制数,并存入原 变量中。 解:DATA SEGMENT BVAR DW 53H,00H
பைடு நூலகம்
AND DL,AH MOV AL,AH MOV BL,AH SHR AL,CH AND BL,0FH 11.试编写一程序,要求比较两个字符串 STRING1 和 STRING2 所含字符是否相 同,若相同则显示 MATCH,若不相同则显示 NOMATCH. SEGMENT 解:DATA 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 ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA START:PUSH DS MOV AX,0 PUSH DS,AX MOV AX,DATA MOV DS,AX MOV AL,BYTE PTR SW MOV AH,AL AND AX,0F00FH MOV CL,4 SHL AH,CL MOV SW,AX RET MAIN ENDP CODE ENDS END START
解: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] CMP AL,M[SI JAE LOOP2 MOV N,BL INC SI CMP CX,20H JZ LOOP3 JMP LOOP1 LOOP2: DEC CX MOV P, BL INC SI CMP CX,20H JZ LOOP3 JMP LOOP1 LOOP3: MOV DX,OFFSET P MOV AH,9 INT 21H MOV DX,OFFSET N MOV AH, 9 INT 21H RET MAIN ENDP CODE ENDS END START 20.编写程序,求字节变量 BVAR 中的压缩 BCD 数转换为二进制数,并存入原 变量中。 解:DATA SEGMENT BVAR DW 53H,00H
பைடு நூலகம்
AND DL,AH MOV AL,AH MOV BL,AH SHR AL,CH AND BL,0FH 11.试编写一程序,要求比较两个字符串 STRING1 和 STRING2 所含字符是否相 同,若相同则显示 MATCH,若不相同则显示 NOMATCH. SEGMENT 解:DATA 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 ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA START:PUSH DS MOV AX,0 PUSH DS,AX MOV AX,DATA MOV DS,AX MOV AL,BYTE PTR SW MOV AH,AL AND AX,0F00FH MOV CL,4 SHL AH,CL MOV SW,AX RET MAIN ENDP CODE ENDS END START