微机原理及接口技术习题及答案 ·9·
(2)MOV AX,0 MOV BX,1 MOV CX,100 A: ADD AX,BX INC BX LOOP A HLT
解:AX=8080H BX=0101H
14. 编写程序段,实现下述要求:
(1) 使AX寄存器的低4位清0,其余位不变。 (2) 使BX寄存器的低4位置1,其余位不变。
(3) 测试AX的第0位和第4位,两位都是1时将AL清0。
(4) 测试AX的第0位和第4位,两位中有一个为1时将AL清0。 解:
(1)使AX寄存器的低4位清0,其余位不变。 AND AX, 0FFF0H
(2) 使BX寄存器的低4位置1,其余位不变。
OR AX, 0FH
(3)测试AX的第0位和第4位,两位都是1时将AL清0。
TEST AX,01H JZ AA
TEST AX,10H JZ AA MOV AL,0 HLT AA: ......
(4)测试AX的第0位和第4位,两位中有一个为1时将AL清0。
TEST AX, 11H JZ AA MOV AL,0 AA: .......
15. 编写程序段,完成把AX中的16进制数转换为ASCII码,并将对应的ASCII码依次存入MEM开始的存储单元中。例如,当AX的内容为37B6H时,MEM开始的4 个单元的内容依次为33H,37H,42H,36H。 解:
MOV CX,4 LEA SI,MEM ADD SI,3 ;SI指向MEM+3 CC: MOV BX,AX ;保存原始数据
AND AX, 000FH ;取个位数 CMP AL, 9 JA AA ;在A~B之间就加37H
·10· 微机原理及接口技术习题及答案
ADD AL,30H ;在0~9之间就加30H JMP BB AA: ADD AL,37H BB: MOV [SI],AL ;保存ASCII值
DEC SI PUSH CX MOV AX,BX MOV CL,4 SHR AX,CL ;准备取下一个数 POP CX LOOP CC
16. 编写程序段,求从TABLE开始的10个无符号数的和,结果放在SUM单元中。 解: LEA SI,TABLE MOV CX,10 XOR AX,AX NEXT: ADD AL,[SI] ADC AH,0 INC SI LOOP NEXT MOV SUM,AX
17. 编写程序段,从键盘上输入字符串‘HELLO’,并在串尾加结束标志‘$’。 解: LEA DX,STRING ;设置字符串存放缓冲区首地址 MOV AH ,0AH ;调用10号功能,输入字符串 INT 21H
MOV CL,STRING+1 ;实际键入的字符个数送CL XOR CH,CH
ADD DX, 2 ADD DX,CX ;得到字符串尾地址 MOV BX,DX MOV BYTE PTR[BX],'$'
18. 编写程序段,在屏幕上依次显示1、2、3、A、B、C。 解: LEA BX,STR ;STR为6个字符的存放区域首地址 MOV CX,6 LPP: MOV AH,2 MOV DL,[BX] INC BX INT 21H ;利用2号功能调用依次先生6个字符 LOOP LPP
19. 编写程序段,在屏幕上显示字符串“Hello World”。 解: LEA DX,STRING ; STRING字符的存放区域首地址 MOV AH,09H INT 21H ; 利用9号功能调用显示字符串
微机原理及接口技术习题及答案 ·11·
20. 编写程序段,把内存中首地址为MEM1的200个字节送到首地址为MEM2的区域。
解: MOV AX,SEG MEM1
MOV DS,AX ;设定源串段地址 MOV AX,SEG MEM2 MOV ES,AX ;设定目标串段地址 MOV SI,0 ;设定源串偏移地址 MOV DI,0 ;设定目标串偏移地址 MOV CX,200 ;串长度送CX CLD ;(DF)=0,使地址指针按增量方向修改 REP MOVSB ;每次传送一个字节,并自动 HLT
21. 编写程序段,以4000H为起始地址的32个单元中存有32个有符号数,统计其中负数的个数,并将统计结果保存在BUFFER单元中。 解:START: MOV DI,OFFSET BUFFER
XOR AL,AL MOV [DI],AL MOV SI,4000H MOV CX,32 AA: MOV AL,[SI] OR AL,AL JNS X1 INC [DI] X1: INC SI NEXT:LOOP AA HLT
·12· 微机原理及接口技术习题及答案
第四章习题及答案
1. 什么叫汇编?汇编语言源程序的处理过程是什么?
解:任何CPU都只能执行机器语言程序。汇编语言不是机器语言,汇编语言程序必须通过具有“翻译”功能的系统程序的处理,处理的过程称为汇编。
汇编语言源程序经过汇编生成机器语言目标程序,简称目标程序。目标程序经过连接程序连接,就得到可执行的机器语言程序文件。
2. 汇编语言的语句类型有哪些?各有什么特点?
解:汇编语言的语句类型有两种:指示性语句和指令性语句。指示性语句可以位于任何段中,指令性语句必须位于代码段内。 ? 指示性语句
又称为伪操作语句,它不是8088/8086CPU的指令,它与汇编程序(assembler)有关。指示性语句的功能主要是变量定义、为数据分配存储空间、告诉汇编程序如何对源程序汇编等。源程序汇编后指示性语句不生成目标代码,所以常被称为伪指令。 ? 指令性语句
指令性语句是可执行语句,是8088/8086CPU的指令。源程序汇编后指令性语句生成目标代码。第3章中介绍的所有指令都是指令性语句的主体,其操作数最多只能有两个。
3. 汇编语言源程序的基本结构是什么?
解:汇编语言源程序由若干段组成:数据段、附件数据段、堆栈段和代码段等,段与段之间的顺序可以随意排列,每一段由SEGMENT开始,以ENDS结束,每段的开始和结束都附有相同的名字。一个程序一般定义三个段:数据段、堆栈段和代码段,必要时增加定义附加数据段,能独立运行的程序至少包含一个代码段。
4. 写出完成下述要求的变量定义的语句:
(1) 为缓冲区BUFF保留200个字节的内存空间 (2) 将字符串’BYTE’,’WORD’存放于某数据区
(3) 在数据区中存入下列5个数据:2040H,0300H,10H,0020H,1048H 解:
(1)为缓冲区BUFF保留200个字节的内存空间
BUFF DB 200 DUP(?)
(2)将字符串’BYTE’,’WORD’存放于某数据区
DB ‘BYTE’,’WORD’
(3)在数据区中存入下列5个数据:2040H,0300H,10H,0020H,1048H DW 2040H,0300H,10H,0020H,1048H