7.设有一段英文,其字符变量名为ENG,试编写一个程序,查对单词READ在该文中出现次数并存放在BX寄存器中。
.MODEL SMALL .STACK .DATA ENG
DB 'SNNREADRAREADUNSUN'
CNTENG EQU $-ENG KEYWORD DB 'READ' CNTKEY .CODE .STARTUP
XOR LEA SUB INC
AGAIN:
LEA
MOV
COMPARE:
MOV MOV INC INC CMP
AL,[SI] AH,[DI] SI DI AL,AH BX,BX SI,ENG DX,CNTKEY DX
DI,KEYWORD CX,CNTKEY EQU $-KEYWORD
MOV DX,CNTENG
LOOPZ COMPARE JNZ NOREAD INC BX
NOREAD: DEC
JNZ
.EXIT 0
END
8.测试AL寄存器的最低位是否为0,若为0,跳转到B1,否则,跳转到B2。
TEST JZ
AL,1 B1 DX AGAIN
JMP B2
9.比较两个字符串STARING1和STARING2所含字符是否完全相同,若相同则显示“MATCH”,不同则显示“NO MATCH”。
.MODEL SMALL .STACK .DATA
NO_MA
DB ‘NO_MATCH’,0DH,0AH,’$’
MAT
DB ‘MATCH’,0DH,0AH,’$’
.CODE .STARTUP
MOV SI,0 MOV DI,0 MOV
CX,COUNT
AGAIN:MOV AL,STRING1[SI]
CMP AL,STRING2[DI]
JZ MA
MOV DX,OFFSET NO_MA MOV AH,9 INT 21H JMP
OK MA:
INC
SI
INC DI
LOOP AGAIN MOV DX,OFFSET MAT MOV AH,9 INT
21H
OK:
.EXIT 0
END
10.设在变量单元A、B和C中存放有三个数, 若三个数都不为0,0,则将其他两个单元也清零,请编写此程序。
MOV AX,A CMP AX,0H JZ NEXT MOV BX,B CMP BX,0H JZ NEXT MOV CX,C CMP CX,0H JZ NEXT ADD D,AX ADD D,BX ADD
D,CX JMP
OK NEXT: MOV
A,0 MOV
B,0
MOV C,0
OK: NOP
11.设变量X为带符号整数,试按下面的要求编制此程序:
①如果X的绝对值大于5,变量FX赋值为零。
则求出三个数之和存入D 中;若有一个为②如果X的绝对值不大于5,变量FX赋值为1—X
MOV MOV CMP JG NEG
NEXT: CMP
JA
NEG ADD MOV
FX,0 AX,X AX,0H NEXT AX AX,5 OK AX AX,1 FX,AX
OK: NOP
12.编制程序计算(见下图):
设X,Y为双字节带符号数据,分别存放在DAX,DAY单元,计算结果存入RLT单元。
X×Y S= X÷Y
(Y>0,X>0)
(Y<0,X<0)
|X+Y| (其它) MOV AX,DAX MOV CMP JL CMP JL IMUL JMP
BX,DAY AX,0H NEXT BX,0H QT BX OK BX,0 QT DX,0 BX OK AX,BX OK AX RLT,AX
NEXT: CMP
JGE MOV
IDIV JMP
QT:
ADD JNS NEG
OK:
MOV
第七章课外练习题
一、单项选择题:
1.完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是( A )
(A)MOV AL,00H (B)AND AL,00H
(C)XOR AL,AL
(D)SUB AL,AL
(D)INC
2.下列指令执行后总是使CF=0,OF=0的是( A ) (A)AND (B)NEG (C)NOT
3.若(AX)=10101101B,为了使其内容变为01010010B,下列( A )指令执行一次即可完成
此操作?
(A)NOT指令
5.
(B)OR指令
(C)AND指令
(D)XOR指令
4.实现将DX:AX中存放的32位数扩大四倍,正确的程序段是( C )
(A)SHL AX,2 (B) RCL AX,2
ROL DX,2
(C)MOV CX,2 LOP: SHL AX,1
(D)
SHL DX,2 SHL AX,1 SHL AX,1
RCL DX,1 RCL DX,1 LOOP LOP RCL DX,1 TA1 DW 0102H,0304H,0506H
TA2 ┆
MOV ADD MOV AND ADD
DB 02H,04H,06H BX, OFFSET TA1 BL, TA2+2 BX, [BX] BX, 0FFH
BH, BYTE PTR TA1 [BX]
(C)0606H
(D)0204H
上述指令序列运行后,BX的内容是( B )
(A)0605H (B)0402H
6.NEXT是某指令语句标号,下述哪个程序段不能实现转移到NEXT语句执行( C ) (A) JMP NEXT (B) MOV BX, OFFSET NEXT (C)
MOV JMP
BX, NEXT BX
(D)
JMP BX
LEA AX, NEXT JMP AX
7.测试BL内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的是( D )
(A) TEST BL,4FH (B) OR BL,4FH
(C)
JZ
AND JZ
NEXT BL,4FH NEXT
(D)
JZ
XOR JZ
NEXT BL,4FH NEXT
8.下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,括号处的指令应为( A )
TEST BH,01H ( ) K1 (A)JNE (B)JZ (C)JS (D)JC
9.下面指令序列测试BX中的数是否为负数,若为负数则转移至F1处,不正确的指令序列应为
相关推荐: