汇编语言课后习题及答案 按章节 超全面(6)

2020-03-27 14:10

(A)JNE (B)JZ (C)JS (D)JC

9.下面指令序列测试BX中的数是否为负数,若为负数则转移至F1处,不正确的指令序列应为(C )。

(A) TEST BX,8000H (B) AND BX,BX

JNZ F1 JS F1

(C) CMP BX,0H (D) SUB BX,0H JNS F1 JL F1

10.编写分支程序,在进行条件判断前,可用指令构成条件,下列指令中不能形成条件的指令是(D )。 (A)CMP (B)SUB (C)AND (D)MOV

11.为使CX= -1时,转至MINUS而编制了一指令序列,其中错误的序列是(D)。

(A) INC CX (B) SUB CX,0FFFFH

JZ MINUS JZ MINUS

(C) AND CX,0FFFFH (D) XOR CX,0FFFFH

JZ MINUS JZ MINUS

二、程序分析题

1. AND AL, AL

JZ BRCH1 RCR AL, 1 JZ BRCH2 RCL AL, 1 INC AL JZ BRCH3 ┆

上述程序运行后,请回答:

①当AL=( 0 )时,程序转向BRCH1; ②当AL=( 1 )时,程序转向BRCH2; ③当AL=( -1 )时,程序转向BRCH3。 2.现有下列程序段:

MOV AX,6540H MOV DX,3210H MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL

试问上述程序段运行后,(AX)=(5400H),(BL)=(06H)(DX)=(2106H) 3.分析下面程序段:

MOV AL,200 SAR AL,1 MOV BL,AL

26

MOV CL,2 SAR AL,CL ADD AL,BL

试问程序段执行后(BL)=(0E4H),(AL)=(0DDH) 4.程序段如下:

BLK1 DB 46,84,34,-5,20,122,73

MOV CX,7 LEA SI,BLK1

NEXT: MOV AL,[SI]

INC SI

TEST AL,81H LOOPZ NEXT MOV BL,[SI]

请回答程序段运行后:(AL)=(0FB)H,(BL)=(14)H 四、用最少的程序编写下列程序段:

1.编写完成下列功能的小程序段:

? 将寄存器AL的第4,3位取反,其余位保持不变。

XOR AL, 00011000B

? 将寄存器AL的第4,3位清零,其余位保持不变。

AND AL, 11100111B

? 将寄存器AL的第4,3位置1,其余位保持不变。

OR AL, 00011000B

? 将寄存器AL的第4,3位写入MEN单元中的第4,3位,其余位保持不变。

AND AL,00011000B AND MEN,11100111B OR MEN,AL

? 将寄存器AL的第i位写入MEN单元的第i位,其余位保持不变,i值在CL中。

MOV BL, 1 SHL BL, CL AND AL, BL NOT BL

AND MEN, BL OR MEN, AL

? 将寄存器AL的第i+1,i位写入MEN单元的第i+1,i位,其余位保持不变,i值在CL中。

MOV BL, 3 SHL BL, CL AND AL, BL NOT BL

AND MEN, BL OR MEN, AL

27

? 如果寄存器AL的第6,5位为00,则将AH清0,否则置全1。

TEST AL, 01100000B JZ L1

MOV AH,0FFH JMP OK

L1: MOV AH,0 OK: NOP

? 如果寄存器AL的第6,5位为01,则将AH清0,否则置全1。

AND AL,01100000B CMP AL,00100000B JZ L1

MOV AH,0FFH JMP OK

L1: MOV AH,0 OK: NOP

? 如果寄存器AL的第6,5位为10,则将AH清0,否则置全1。

AND AL,01100000B CMP AL,01000000B JZ L1

MOV AH,0FFH JMP OK

L1: MOV AH,0 OK: NOP

? 如果寄存器AL的第6,5位为11,则将AH清0,否则置全1。

AND AL,01100000B CMP AL,01100000B JZ L1

MOV AH,0FFH JMP OK

L1: MOV AH,0 OK: NOP

⑴ 如果寄存器AL的数据为偶数,则将AH清0,否则置全1。

TEST AL, 1 JZ L1

MOV AH,0FFH JMP OK

L1: MOV AH,0 OK: NOP

⑵ 如果寄存器AL的数据为正数,则将AH清0,否则置全1。

TEST AL, 80H JZ L1

MOV AH,0FFH

28

JMP OK

L1: MOV AH,0 OK: NOP

2.不允许使用乘法指令来完成AX与12的乘法运算。

SHL AX, 1 ;将AX乘2(等于2倍) MOV BX, AX ;预存一份AX在BX内 SHL AX, 1 ;将AX再乘2(等于4倍) ADD AX, BX ;加上原有2倍(等于6倍) SHL AX, 1 ;再乘2(等于12倍)

3.写一指令序列,将DX与AX中的双字左移三位。

MOV CX,3

LOP: SHL AX,1

RCL DX,1 LOOP LOP

4.内存单元MEMB存放着一个8位的数据,将它的高4位与低4位互换。

MOV CL, 4

ROL MEN, CL

5.将AL的第7位和第0位,第6位和第1位,第5位和2第位,第4位和第3位互换。

MOV CX,7 MOV BL,0

LOP: MOV AH,AL

AND AH,1 ADD BL,AH SHR AL,1 SAL BL,1 LOOP LOP ADD AL,BL

五、简答题

1.至少使用三种方法(提示:MUL、SHL和SHR指令)实现将DATA中的字节数据乘以64的指令序列。

① MOV AL,64

MUL DATA

② MOV CL,6

SHL DATA,CL

③ MOV AH,DATA

MOV AL,0 SHR AX,2

MOV DATA,AL

29

第九章课外练习题

一、单项选择题: 1.已知CALL BX执行前SP=100H,执行后SP的内容为( D )。 (A)100H (B)102H (C)98H (D)0FEH 2.已知SP=100H,指令RET(远返回)执行后SP的值为( B )。

(A)106H (B)104H (C)0FCH (D)0FAH

3.已知SUBR是一个属性NEAR的子程序,下述调用SUBR子程序的指令序列中,哪一个不能实现调用SUBR的目的( C )。

(A)CALL SUBR (B)CALL NEAR PTR SUBR (C)MOV BX,OFFSET SUBR (D)MOV BX,OFFSET SUBR

CALL NEAR PTR [BX] CALL BX

4.下面是将某存储区清0的宏定义,如将BUFF开始的100个存储单元清0,则其宏调用格式为( C )。

CLEAR MACRO DIR,DST,CNT

DIR LEA DI,DST MOV CX,CNT XOR AL,AL REP STOSB

ENDM

(A)CLEAR BUFF,100 (B)CLEAR STD,BUFF,100 (C)CLEAR CLD,BUFF,100 (D)CLEAR BUFF,STD,100 5.宏指令库以( C )格式存放在磁盘上。

(A)可执行代码 (B)目标代码 (C)源代码 6.汇编程序使用( C )伪指令使重复块重复多次。

(A)LOOP (B)REPE (C)REPT (D)LOCAL

二、判断题(判断每题正误,对的在题后括号内划 “√”,错的划“×”)

1.CALL WORD PTR[SI] ( × ) 2.CALL [BX] [SI] ( × ) 3.CALL AX ( × ) 4.CALL [BX] ( √ ) 5.CALL NEAR PTR [SI] ( × ) 6.CALL FAR PTR [SI+2] ( × ) 7.宏的处理是在程序执行过程中处理的 ( × ) 8.宏定义中的形式参数可以多于宏调用的实在参数 ( √ ) 三、填空题

1.调用程序与子程序之间的参数传递方法有三种,即堆栈法(寄存器法)(存储单元)。

2.LOCAL用于说明局部标号的伪指令,它只允许在(宏程序中)使用,其位置必须在(第一条指令前)。 四、简答题

1.指出CALL指令与JMP指令的异同?

30


汇编语言课后习题及答案 按章节 超全面(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:QFD法在高校食堂服务中的应用

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: