第5章 习 题
5.1 选择题
1.条件转移指令能转移的最大范围是( A )
A. –128~127 B. 0~255 C. -32768~32767 D. 0~65535 2.指令JMP BX转移的目标地址的偏移量为( c )
A. IP+BX的内容 B. IP+[BX] C. BX的内容 D. BX所指向的内存字单元的内容 3.指令JMP WORD PTR [BX]转移的目标地址偏移量为(D )
A. IP+BX的内容 B. IP+[BX] C. BX的内容 D. BX所指向的内存字单元的内容 4.若A、B为无符号数,当A≥B时转移的条件转移指令为( D ) A. JGE B. JG C. JA D. JAE
5.若A、B为带符号数,当A≤B时转移的条件转移指令为( D ) A. JB B. JBE C. JL D. JLE
6.下列程序段中,不能转移到标号L1处执行的程序段是(B )
A. JMP L1 B. MOV BX,L1 C. LEA BX,L1 D. MOV BX,OFFSET L1 JMP BX JMP BX JMP BX
7.下面程序段中,当满足条件,转移到标号L2执行时,BL中的值正确的是( D ) CMP BL,2FH JGE L2
A. BL=0FFH B. BL=80H C. BL=0 D. BL=30H
8. 设有下列程序段,若执行后能转移到L3处,则说明AL的内容为( A,D ) TEST AL,05H JZ L3
A. 0A0H B. 05H C. 第1、3位为0 D. 第0、2位为0 5.2 内存缓冲区BUF1中有10个字节数据,下面的程序段求出这十个数的平均值,并存储于
字节变量RESULT中,请将程序补充完整。 MOV AX,0 LEA BX,BUF1 MOV CX,10
LOP1:ADD AX,___[BX]_____ INC BX
_LOOP LOP1_________ MOV DL,10 DIV DL
MOV RESULT,__AL____ HLT
5.3 内存缓冲区BUF2中有10个无符号字数据,下面的程序段找出这些数的最大值,并存于
MAX字单元。
MOV BX,0 MOV CX,9
MOV AX,BUF2[BX] LOP2: ADD BX,2
CMP AX,___[BX]____ __JAE/JNB_____ NEXT MOV AX,___[BX]_____
NEXT: LOOP LOP2 MOV MAX,AX HLT
5.4 阅读下面的程序,回答问题。 MOV AX,5A6BH;
MOV BL,0; MOV DL,0; MOV CX,16
LOP1:SHL AX,1;AX=0101 1010 0110 1011B,左移1位 JC LOP2
INC BL;统计0的个数 JMP LOP3
LOP2:INC DL ;统计1的个数 LOP3: LOOP LOP1 HLT
(1)该程序完成什么功能?
答:统计AX中“1”的个数和“0”的个数 (2)程序执行后BL、DL和AX的内容分别是多少? 答:BL=7,DL=9,AX=0000H
5.5 下面的程序将内存字节变量BUFFER中的10个压缩BCD码转换成非压缩BCD码,结果存
于内存字节变量RESULT中,请将程序补充完整。 LEA SI,BUFFER LEA DI,RESULT
___MOV CX,10________ L1: MOV DL,[SI] MOV AL,DL MOV CL,4
____SHR AL,CL__________保留BCD码的高4位,并将其移到低4位 MOV [DI],AL INC DI
_____AND DL,0FH_________保留BCD码的低4位,并将其高4位屏蔽掉 MOV [DI],DL INC DI INC SI LOOP L1 HLT
5.6 阅读下面的程序,分析其功能。 MOV DX,0
LOP1:MOV AH,1 ;从键盘接收一个字符,字符的ASCII码在AL中 INT 21H CMP AL,'$' JZ NEXT CMP AL,30H JB LOP1
CMP AL,39H JA LOP1 AND AL,0FH ADD DL,AL ADC DH,0 JMP LOP1 NEXT: HLT
功能是:从键盘接收的数(0~9)进行累加,累加结果在DX中;当键入‘$’结束 5.7 用查表的方法将一位十六进制数转换成相应的ASCII码。
5.8 采用上题的方法,将内存中的一个字数据以十六进制的形式显示在屏幕上。 5.9 采用其它方法完成上题的要求。
5.10 将内存中的一个字转换成十进制数并在屏幕上显示出来。
5.11 已知内存中有一个字符串STRING,要求在串中查找一个字符“A”,若找到,就将它从
串中删除。
5.12 先将内存中的一个字符串排序,然后将字符“F”插入到串中适当的位置。 5.13 将内存中的一个字数据串进行从大到小的排序。
5.14 编写程序,找出一个字节数组中的最大数和最小数,分别存到MAX和MIN单元。 5.15 编写程序,找出一个字数组中最小的偶数,并存到AX中。
5.16 比较两个等长的字符串STRING1和STRING2是否相同,若相同,把AX的内容置1,若
不同,则把AX的内容置为0。
5.17 编写程序,将一个包含20个元素的数组STRING分成一个偶数数组STRING1和一个奇
数数组STRING2。
5.18 统计一个字符串中大写字母和小写字母的个数。
5.19 将一个包含10个压缩BCD码的字符串转换成一个非压缩BCD码的串。