微型计算机原理第2版西安电子科技大学出版社第五章汇编语言程序设计课后习题答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EX511b.ASM DATA SEGMENT
Infor1 DB 'Please input string1:',0AH,0DH,'$' Infor2 DB 0AH,0DH,'Please input string2:',0AH,0DH,'$' STR1 DB 12,0,10 DUP (0) STR2 DB 12,0,10 DUP (0) Infor3 DB 0AH,0DH,'MATCH',0AH,0DH,'$' Infor4 DB 0AH,0DH,'NO MATCH',0AH,0DH,'$' DATA ENDS CODE SEGMENT
DB 30 DUP(?)
ADDRESS
DB 30 DUP(?)
CITY
DB 15 DUP(?)
CODE_LIST DB 1,7,8,3,2
(1) 用一条 MOV 指令将 LNAME 的偏移地址存入 BX。 (2) 用一条指令将 CODE_LIST 的头两个字节的内容放入 SI。 (3) 写一条伪指令定义符使 CODE_LENGTH 的值等于 CODE_LIST 域的实
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA
MOV DS,AX mov bx,0 MOV SI,0 MOV DI,0 MOV CX,20 again: cmp M[bx],0 jl less je again inc si jmp next less: inc di
MOV DX,OFFSET Infor4 MOV AH,9 INT 21H ReturnDOS: MOV AH,4CH INT 21H CODE ENDS END START
EX513b DATA SEGMENT
M DB 1,2,3,4,5,6,-7,-8,-9,-10,11,12,13,14,15,-16,-17,-18,-19,-20 P DB 20 DUP(0) N DB 20 DUP(0) CountP DB 0 CountN DB 0 DATA ENDS CODE SEGMENT
MOV DX,OFFSET STR2 MOV AH,0AH INT 21H INC SI INC DI MOV AL,[SI] MOV AH,[DI] CMP AH,AL JNZ NOSAME MOV AH,0
MOV CX,AX INC SI INC DI CLD COMPARE: REPE CMPSB JNE NOSAME SAME: MOV DX,OFFSET Infor3 MOV AH,9 INT 21H JMP ReturnDOS NOSAME:
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA
MOV DS,AX LEA SI,STR1 LEA DI,STR2 MOV DX,OFFSET Infor1 MOV AH,9 INT 21H MOV DX,OFFSET STR1 MOV AH,0AH INT 21H MOV DX,OFFSET Infor2 MOV AH,9 INT 21H
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA
MOV DS,AX MOV ES,AX
LEA SI,STR1 LEA DI,STR2 MOV DX,OFFSET Infor1 MOV AH,9 INT 21H MOV DX,OFFSET STR1 MOV AH,0AH INT 21H MOV DX,OFFSET Infor2 MOV AH,9 INT 21H
EX515.ASM
DATA SEGMENT INFOR0 DB 0AH,0DH,"please input a four hex number",0AH,0DH,'$' INFOR DB 0AH,0DH,"invalid hex digital",0AH,0DH,'$' INFOR2 DB 0AH,0DH,"convert binary is:",0AH,0DH,'$'
;
(3) SUB [BX] ,2 (4) MOV CL,WVAL
;SUB [BX],WORD PTR 2 ; SUB BYTE PTR [BX] ,2 ;MOV CL,BYTE PTR WVAL
8、编写一宏定义 BXCHG ,将一字节的高 4 位与低 4 位交换。 答:
BXCHG MACRO BT MOV AL ,BT MOV CL,4 ROL AL , CL
ENDM
9、已知宏定义如下:
XCHG0 MACRO A,B MOV AH ,A XCHG AL , B MOV A,AL
ENDM
OPP
MACRO P1,P2, P3,P4
XCHG0 P1,P4
XCHG0 P2,P3
ENDM 展开宏调用 OPP BH,BL ,CH, CL
答:展开宏调用 OPP BH ,BL ,CH,CL 为: MOV AH,BH
(4) MOV DX ,SIZE TABLEA
; (DX)=0028H
(5) MOV CX ,LENGTH TABLEB
;(CX)=0001H
7、试说明下述指令中哪些需要加上 PTR 伪指令定义符。
BVAL DB 10H,20H
WVAL DW 1000H
;答:
(1) MOV AL ,BVAL
;
(2) MOV DL ,[BX]
MOV DX,OFFSET STR2 MOV AH,0AH INT 21H INC SI INC DI MOV AL,[SI] MOV AH,[DI] CMP AH,AL JNZ NOSAME CHARCOMPARE: INC SI INC DI
MOV BH,BYTE PTR[SI] CMP BH,BYTE PTR[DI] JNZ NOSAME DEC AL JNZ CHARCOMPARE SAME: MOV DX,OFFSET Infor3 MOV AH,9 INT 21H JMP ReturnDOS NOSAME: MOV DX,OFFSET Infor4 MOV AH,9 INT 21H ReturnDOS: MOV AH,4CH INT 21H CODE ENDS END START
mov ax,di mov ch,10 div ch mov dl,al mov bh,ah ADD DL,30H MOV AH,2 INT 21H mov dl,bh ADD DL,30H MOV AH,2 INT 21H mov ah,4ch
int 21h
CODE ENDS END START
next: inc bx dec cx jnz again
show: mov ax,si mov ch,10 div ch mov dl,al mov bh,ah ADD DL,30H MOV AH,2 INT 21H mov dl,bh ADD DL,30H MOV AH,2 INT 21H mov dl,2ch mov ah,2 int 21h
际长度。
答: (1) MOV BX ,OFFSET LNAME
(2) MOV SI,WORD PTR CODE_LIST (3) CODE_LENGTH EQU $- CODE_LIST
5、对于下面的数据定义,试说明三条 MOV 语句指令的执行结果。
TABLEA DW 10 DUP(?)
TABLEB DB 10 DUP(?)
02H
02H
01H
00H
02H
00H
07H
00H
00H
ห้องสมุดไป่ตู้
01H
07H
00H
01H
02H
02H
00H
01H
00H
02H
00H
07H
01H
00H
02H
00H
2、假设程序中的数据定义如下:
PARTNO DW ? PNAME DB 16 DUP(?) COUNT DD ?
PLENTH EQU $- PARTNO
答:(1)
(2)
BYTE_V AR
42H
WORD_V AR
00H
07H
59H
00H
00H
54H
01H
FBH
45H
00H
FFH
0CH
02H
59H
EEH
00H
42H
00H
00H
45H
07H
00H
54H
01H
01H
56H
02H
00H
02H
01H
02H
02H
00H
07H
00H
00H
00H
07H
01H
01H
00H
TABLEC DB ‘1234’
答:
MOV AX ,LENGTH TABLEA
;(AX)=000AH
MOV BL,LENGTH TABLEB
; (BL)=0AH
MOV CL,LENGTH TABLEC
; (CL)=01H
6、对于下面的数据定义,各条 MOV 指令单独执行后,有关寄存器的内容 是什么?
PLDB DB ?
TABLEA DW 20 DUP(?) TABLEB DB ‘ ABCD ’
;答:
(1) MOV AX ,TYPE PLDB
;(AX)=0001H
(2) MOV AX ,TYPE TABLEA
; (AX)=0002H
(3) MOV CX ,LENGTH TABLEA
;(CX)=0014H
DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA
MOV DS,AX LEA DX,INFOR0 MOV AH,9 INT 21H XOR BX,BX MOV CH,04 MOV CL,04 INPUT: SHL BX,CL MOV AH,01 INT 21H CMP AL,30H JB ERROR CMP AL,39H JA NEXT AND AL,0FH JMP BINARY NEXT: CMP AL,41H
JAE CONTINE JMP ERROR CONTINE: CMP AL,46H JA CONTINE2 JMP PROCESS CONTINE2: CMP AL,61H JAE CONTINE3 JMP ERROR CONTINE3: CMP AL,66H JA ERROR
问:PLENTH 的值为多少?他表示什么意义? 答:PLENTH 的值为 22,它表示当前已分配单元空间。 3、有符号定义语句如下:
BUF DB 1,2,3,’ 123’
EBUF DB 0 L EQU EBUF-BUF
问:L 的值是多少? 答:L 的值为 6; 4、假设成序中的数据定义如下:
LNAME
BCD 数,在屏幕上显示结果。 24、设有字无符号数 X、Y,试编制求 Z=丨 X-Y 丨的程序。
11. DATA SEGMENT
Infor1 DB 'Please input string1:',0AH,0DH,'$' STR1 DB 12,0,10 DUP (0) Infor2 DB 0AH,0DH,'Please input string2:',0AH,0DH,'$' STR2 DB 12,0,10 DUP (0) Infor3 DB 0AH,0DH,'MATCH',0AH,0DH,'$' Infor4 DB 0AH,0DH,'NO MATCH',0AH,0DH,'$' DATA ENDS CODE SEGMENT
13、编写程序,将以包含有 20 个数据的数组 M 分成两个数组,正数数组 P 和负数数组 N,并分别把这两个数组中数据的个数显示出来。
20、编写程序,将字节变量 BVAR 中的压缩型 BCD 数转换为二进制数,并 存入原变量中。
23、编写程序,将字节变量 BVAR 中的无符号二进制数( 0~FFH)转换为
XCHG AL ,CL
MOV MOV XCHG
BH, AL AH , BL AL ,CH
MOV BL,AL
10、将 AX 寄存器中的 16 位数分成 4 组,每组 4 位,然后把这四组数分别 放在 AL 、BL、CL 和 DL 中。
答:
MOV AND
DL,AH DL,0F0H
MOV CL,4
SHR
第五章 汇编语言程序设计
1、画图说明下列语句所分配的存储器空间及初始化的数据值。
(1) BYTE_V AR DB ‘ BYTE,’ 12,-12H,3 DUP(0 ,7, 2 DUP(1,2),7)
(2) WORD_V AR DW 5 DUP(0 ,1,2),7,-5,’ BY ,’’ TE ,’256H
DL,CL
PUSH AND MOV AND MOV MOV SHR MOV
AX AH , 0FH BH, AH AL ,0F0H BL,AL CL,4 BL,CL CL,BH
POP
AX
AND AL ,0FH
11、试编写一程序,要求比较两个字符串
STRING1 和 STRING2 所含字符
是否相同,若相同则显示“ MATCH ”,若不相同则显示“ NOMATCH ”。
Infor1 DB 'Please input string1:',0AH,0DH,'$' Infor2 DB 0AH,0DH,'Please input string2:',0AH,0DH,'$' STR1 DB 12,0,10 DUP (0) STR2 DB 12,0,10 DUP (0) Infor3 DB 0AH,0DH,'MATCH',0AH,0DH,'$' Infor4 DB 0AH,0DH,'NO MATCH',0AH,0DH,'$' DATA ENDS CODE SEGMENT
DB 30 DUP(?)
ADDRESS
DB 30 DUP(?)
CITY
DB 15 DUP(?)
CODE_LIST DB 1,7,8,3,2
(1) 用一条 MOV 指令将 LNAME 的偏移地址存入 BX。 (2) 用一条指令将 CODE_LIST 的头两个字节的内容放入 SI。 (3) 写一条伪指令定义符使 CODE_LENGTH 的值等于 CODE_LIST 域的实
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA
MOV DS,AX mov bx,0 MOV SI,0 MOV DI,0 MOV CX,20 again: cmp M[bx],0 jl less je again inc si jmp next less: inc di
MOV DX,OFFSET Infor4 MOV AH,9 INT 21H ReturnDOS: MOV AH,4CH INT 21H CODE ENDS END START
EX513b DATA SEGMENT
M DB 1,2,3,4,5,6,-7,-8,-9,-10,11,12,13,14,15,-16,-17,-18,-19,-20 P DB 20 DUP(0) N DB 20 DUP(0) CountP DB 0 CountN DB 0 DATA ENDS CODE SEGMENT
MOV DX,OFFSET STR2 MOV AH,0AH INT 21H INC SI INC DI MOV AL,[SI] MOV AH,[DI] CMP AH,AL JNZ NOSAME MOV AH,0
MOV CX,AX INC SI INC DI CLD COMPARE: REPE CMPSB JNE NOSAME SAME: MOV DX,OFFSET Infor3 MOV AH,9 INT 21H JMP ReturnDOS NOSAME:
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA
MOV DS,AX LEA SI,STR1 LEA DI,STR2 MOV DX,OFFSET Infor1 MOV AH,9 INT 21H MOV DX,OFFSET STR1 MOV AH,0AH INT 21H MOV DX,OFFSET Infor2 MOV AH,9 INT 21H
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA
MOV DS,AX MOV ES,AX
LEA SI,STR1 LEA DI,STR2 MOV DX,OFFSET Infor1 MOV AH,9 INT 21H MOV DX,OFFSET STR1 MOV AH,0AH INT 21H MOV DX,OFFSET Infor2 MOV AH,9 INT 21H
EX515.ASM
DATA SEGMENT INFOR0 DB 0AH,0DH,"please input a four hex number",0AH,0DH,'$' INFOR DB 0AH,0DH,"invalid hex digital",0AH,0DH,'$' INFOR2 DB 0AH,0DH,"convert binary is:",0AH,0DH,'$'
;
(3) SUB [BX] ,2 (4) MOV CL,WVAL
;SUB [BX],WORD PTR 2 ; SUB BYTE PTR [BX] ,2 ;MOV CL,BYTE PTR WVAL
8、编写一宏定义 BXCHG ,将一字节的高 4 位与低 4 位交换。 答:
BXCHG MACRO BT MOV AL ,BT MOV CL,4 ROL AL , CL
ENDM
9、已知宏定义如下:
XCHG0 MACRO A,B MOV AH ,A XCHG AL , B MOV A,AL
ENDM
OPP
MACRO P1,P2, P3,P4
XCHG0 P1,P4
XCHG0 P2,P3
ENDM 展开宏调用 OPP BH,BL ,CH, CL
答:展开宏调用 OPP BH ,BL ,CH,CL 为: MOV AH,BH
(4) MOV DX ,SIZE TABLEA
; (DX)=0028H
(5) MOV CX ,LENGTH TABLEB
;(CX)=0001H
7、试说明下述指令中哪些需要加上 PTR 伪指令定义符。
BVAL DB 10H,20H
WVAL DW 1000H
;答:
(1) MOV AL ,BVAL
;
(2) MOV DL ,[BX]
MOV DX,OFFSET STR2 MOV AH,0AH INT 21H INC SI INC DI MOV AL,[SI] MOV AH,[DI] CMP AH,AL JNZ NOSAME CHARCOMPARE: INC SI INC DI
MOV BH,BYTE PTR[SI] CMP BH,BYTE PTR[DI] JNZ NOSAME DEC AL JNZ CHARCOMPARE SAME: MOV DX,OFFSET Infor3 MOV AH,9 INT 21H JMP ReturnDOS NOSAME: MOV DX,OFFSET Infor4 MOV AH,9 INT 21H ReturnDOS: MOV AH,4CH INT 21H CODE ENDS END START
mov ax,di mov ch,10 div ch mov dl,al mov bh,ah ADD DL,30H MOV AH,2 INT 21H mov dl,bh ADD DL,30H MOV AH,2 INT 21H mov ah,4ch
int 21h
CODE ENDS END START
next: inc bx dec cx jnz again
show: mov ax,si mov ch,10 div ch mov dl,al mov bh,ah ADD DL,30H MOV AH,2 INT 21H mov dl,bh ADD DL,30H MOV AH,2 INT 21H mov dl,2ch mov ah,2 int 21h
际长度。
答: (1) MOV BX ,OFFSET LNAME
(2) MOV SI,WORD PTR CODE_LIST (3) CODE_LENGTH EQU $- CODE_LIST
5、对于下面的数据定义,试说明三条 MOV 语句指令的执行结果。
TABLEA DW 10 DUP(?)
TABLEB DB 10 DUP(?)
02H
02H
01H
00H
02H
00H
07H
00H
00H
ห้องสมุดไป่ตู้
01H
07H
00H
01H
02H
02H
00H
01H
00H
02H
00H
07H
01H
00H
02H
00H
2、假设程序中的数据定义如下:
PARTNO DW ? PNAME DB 16 DUP(?) COUNT DD ?
PLENTH EQU $- PARTNO
答:(1)
(2)
BYTE_V AR
42H
WORD_V AR
00H
07H
59H
00H
00H
54H
01H
FBH
45H
00H
FFH
0CH
02H
59H
EEH
00H
42H
00H
00H
45H
07H
00H
54H
01H
01H
56H
02H
00H
02H
01H
02H
02H
00H
07H
00H
00H
00H
07H
01H
01H
00H
TABLEC DB ‘1234’
答:
MOV AX ,LENGTH TABLEA
;(AX)=000AH
MOV BL,LENGTH TABLEB
; (BL)=0AH
MOV CL,LENGTH TABLEC
; (CL)=01H
6、对于下面的数据定义,各条 MOV 指令单独执行后,有关寄存器的内容 是什么?
PLDB DB ?
TABLEA DW 20 DUP(?) TABLEB DB ‘ ABCD ’
;答:
(1) MOV AX ,TYPE PLDB
;(AX)=0001H
(2) MOV AX ,TYPE TABLEA
; (AX)=0002H
(3) MOV CX ,LENGTH TABLEA
;(CX)=0014H
DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA
MOV DS,AX LEA DX,INFOR0 MOV AH,9 INT 21H XOR BX,BX MOV CH,04 MOV CL,04 INPUT: SHL BX,CL MOV AH,01 INT 21H CMP AL,30H JB ERROR CMP AL,39H JA NEXT AND AL,0FH JMP BINARY NEXT: CMP AL,41H
JAE CONTINE JMP ERROR CONTINE: CMP AL,46H JA CONTINE2 JMP PROCESS CONTINE2: CMP AL,61H JAE CONTINE3 JMP ERROR CONTINE3: CMP AL,66H JA ERROR
问:PLENTH 的值为多少?他表示什么意义? 答:PLENTH 的值为 22,它表示当前已分配单元空间。 3、有符号定义语句如下:
BUF DB 1,2,3,’ 123’
EBUF DB 0 L EQU EBUF-BUF
问:L 的值是多少? 答:L 的值为 6; 4、假设成序中的数据定义如下:
LNAME
BCD 数,在屏幕上显示结果。 24、设有字无符号数 X、Y,试编制求 Z=丨 X-Y 丨的程序。
11. DATA SEGMENT
Infor1 DB 'Please input string1:',0AH,0DH,'$' STR1 DB 12,0,10 DUP (0) Infor2 DB 0AH,0DH,'Please input string2:',0AH,0DH,'$' STR2 DB 12,0,10 DUP (0) Infor3 DB 0AH,0DH,'MATCH',0AH,0DH,'$' Infor4 DB 0AH,0DH,'NO MATCH',0AH,0DH,'$' DATA ENDS CODE SEGMENT
13、编写程序,将以包含有 20 个数据的数组 M 分成两个数组,正数数组 P 和负数数组 N,并分别把这两个数组中数据的个数显示出来。
20、编写程序,将字节变量 BVAR 中的压缩型 BCD 数转换为二进制数,并 存入原变量中。
23、编写程序,将字节变量 BVAR 中的无符号二进制数( 0~FFH)转换为
XCHG AL ,CL
MOV MOV XCHG
BH, AL AH , BL AL ,CH
MOV BL,AL
10、将 AX 寄存器中的 16 位数分成 4 组,每组 4 位,然后把这四组数分别 放在 AL 、BL、CL 和 DL 中。
答:
MOV AND
DL,AH DL,0F0H
MOV CL,4
SHR
第五章 汇编语言程序设计
1、画图说明下列语句所分配的存储器空间及初始化的数据值。
(1) BYTE_V AR DB ‘ BYTE,’ 12,-12H,3 DUP(0 ,7, 2 DUP(1,2),7)
(2) WORD_V AR DW 5 DUP(0 ,1,2),7,-5,’ BY ,’’ TE ,’256H
DL,CL
PUSH AND MOV AND MOV MOV SHR MOV
AX AH , 0FH BH, AH AL ,0F0H BL,AL CL,4 BL,CL CL,BH
POP
AX
AND AL ,0FH
11、试编写一程序,要求比较两个字符串
STRING1 和 STRING2 所含字符
是否相同,若相同则显示“ MATCH ”,若不相同则显示“ NOMATCH ”。