刘臣奇主编-汇编语言程序设计-课外练习题参考答案(2)

2020-03-27 02:21

第三章课外练习题

一、单项选择题:

1.以下语句汇编后,CENTH的值是( A )。

BUF1 DW 8,19

BUF2 DB

6,'ABC$',10 DUP('5')

(D)17

CENTH EQU BUF2—BUF1 (A)4 (B)8 (C)14

2.在DEBUG环境下查看机器指令使用( B )命令;显示内存数据使用( E )命令。 (A)G (B)U (C)T (D)A (E)D (F)E (G)R 二、填空题:

1.写出下列各语句在存储器中分别为变量分配多少字节,并填入括号内。 DATA

SEGMENT

20

( 2

‘31H,32H,33H’ 10H

( 11 )

( 0 ) ( 10H )

NUM1 DW NUM2 DB NUM3 EQU

NUM4 DB NUM3 DUP(0) DATA ENDS

2.某程序的数据段定义如下: DATASG SEGMENT

PARTLIST DB‘PART#’

DB 60

DB ‘PRICE’ DB 0125

DB ‘DESCRIPTION’ DB ‘RADIO’

LISTLENG EQU ($-PARTLIST) ;数组长度,用表达式表示 DATASG ENDS

3.有符号定义语句如下: BUFF DB 1,2,3,‘123’ EBUFF DB 0

L EQU EBUFF - BUFF 问L的值是( 6 )。

4.下边是汇编语言程序上机步骤,请填写出完成各步骤使用的系统程序的文件名字,并按照正确步骤给出操作顺序号。

操作名称 文件名

操作顺序

汇编 ( MASM ) ( 2 ) 编辑 ( EDIT ) ( 1 ) 连接 ( LINK ) ( 3 )

调试 ( DEBUG ) ( 4 )

5.自内存0F00:0006开始的内存单元中存放着80 32 56 98 76 B5这六个十六进制数据,试分别写出0F00:0008的字节型数据,字型数据、双字型数据的值。

字节型: ( 56

字型: ( 9856 )

双字型: ( B5769856 )

6.对于如下所示的数据定义,各指令语句的执行结果是什么(以十六进制数表示)?

VR1 VR2 ① ② ③

DB DW

-38,'456',? 6,5 DUP(2)

( -38 )

MOV AL, VR1

ADD VR2,59 ( 65 ) MOV BL,VR1+2 ( 53 )

7.对于第6小题,为VR1变量分配了( 5 )个字节,为VR2变量分配了( 12 )个字节。 8.汇编源程序的文件扩展名是( . ASM )。 9.以下语句汇编后,COUNT的值是( 9 )。

BUF1 DB 3,5,'ABCD$'

BUF2 DW 0FABH COUNT EQU $-BUF1

10.保存当前栈顶地址的寄存器是( SP )。

11.在程序运行时执行的语句是( 指令 )语句,它告诉CPU要执行的操作。 12.( 伪指令 )语句是由汇编程序在汇编过程中执行的语句。

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

1.汇编语言是用指令的助记符、符号地址、标号等符号书写程序的语言。 (√)

2.通过ASSUME伪指令给段寄存器赋初值。

(×) (√) (×) (√)

3.在汇编语言中当缺省为十进制数时,表示十六进制数要用H结尾。 4.在DEBUG中,缺省值为十进制数。 5.在标志IF=0时,CPU忽略所有的中断请求。 四、简答

1.标号具有哪3种属性?该3种属性的属性值分别表示什么?

答:标号具有三种属性:段、偏移和类型属性。

①段属性:定义标号的段起始地址,此值必须在一个段寄存器中,而标号的段则总是在CS寄存器中。段属性值可以用SEG算符求得。

②偏移属性:标号的偏移地址是从段起始地址到定义标号的位置之间的字节数。标号偏移量属性值可由OFFSET算符求得。

③类型属性:类型属性用来指出该标号是在本段内引用还是在其他段中引用的。标号类型值可用TYPE算符求得。

第四章课外练习题

一、单项选择题:

1.若栈顶的物理地址为20100H,当执行完指令PUSH AX后,栈顶的物理地址为( D )。

(A)20102H (B)20101H (C)200FFH (D)200FEH 2.下列指令执行后,DAB中第一个字的内容是(B)。

DAB DB 0FAH,0DAH,0F5H,0D0H,5H

DAB_L EQU

MOV (A) 05DAH

$-DAB AL,DAB_L

(B) 0DA05H

(C) 0F5DAH

(D) 0DAF5H

XCHG DAB,AL

3.执行下列指令后,正确的结果是(B)。

MOV AL, 100

MOV BL, -2

(A)AL=100H,BL=02H (C)AL=64H,BL=82H

(B)AL=64H,BL=0FEH (D)AL=100H,BL=0FEH

4.完成同指令XCHG AX,BX相同功能的指令或指令序列是(D)。

(A)MOV AX,BX (B) MOV BX,AX

(C)PUSH AX

POP BX

(D)

MOV CX,AX

MOV AX,BX

MOV BX,CX

5.为了使MOV AX,VAR指令执行后,AX寄存器中的内容为4142H,下面哪一条数据定义会产生不正确的结果?(C)

(A)VAR DW 4142H

(B)

VARDW 16706

(C)VAR DB 42H,41H (D) VAR DW ‘AB’ 6.假定用伪指令DATA DB 12H,34H定义了两个字节数据,现需要将数据12H取入寄存器AL,将数据34H取入寄存器AH,能完成此功能的程序段是(D)。

(A) MOV AX,DATA (B) MOV SI,DATA

MOV AX,[SI]

(C)

LEA SI,DATA MOV MOV

(D)

MOV SI,OFFSET DATA MOV AL,[SI] MOV AH,[SI+1]

AX,[SI] AH,[SI]

7.POP指令的操作数不能是( D )。

(A)BP (B)[BX]

二、简答题

(C)字变量的SUM (D)CS

1.设ARRAY是字数组的首地址,写出将第5个字元素取出送AX寄存器的指令序列,要求使用以下几种寻址方式:

①直接寻址;

(MOV AX,ARRAY+8)

②寄存器间接寻址; (LEA BX,ARRAY+8和MOV AX,[BX]) ③变址寻址; (MOV SI,8和MOV AX,ARRAY[SI]) ④基址变址寻址。

(LEA BX,ARRAY及MOV SI,8和MOV AX,[BX][SI])

2.设有以下程序段,求执行完此程序段后AL寄存器中的内容。(12H)

ABC EQU

DATA1 DB DATA2 DW

┆ MOV ① ② ③ ④

2 20H 1234H

AL,DATA1+ABC MOV MOV MOV MOV MOV LEA MOV

AX,1234H AX,[1234H] AX,TABLE AX,TABLE AX,TALBE AX,BX

AX←1234H AX←1234H的地址 AX←TABLE的数据 AX←TABLE的数据 AX←TABLE的地址 AX←BX的内容

3.下列每组指令有何区别?

AX,[TABLE] AX←TABLE的地址

MOV AX,[BX] AX←BX的地址

4.写一指令序列,将3456H装入DS寄存器。

MOV MOV

AX,3456H DS,AX

5.不可以从堆栈向哪个段寄存器弹出数据?答:CS 6.若(SS)=2000H,(SP)=000AH,先执行将字数据1234H和5678H压入堆栈的操作,再执行弹出一个字数据的操作,试画出堆栈区及SP的内容变化过程示意图(标出存储单元的物理地址)。

内容 堆栈地址 内容 堆栈地址 内容 堆栈地址

执行前SP? 20006H 20007H 20008H 20009H 2000AH 执行后SP? 78H

56H 34H 12H 20006H 20007H 20008H 20009H 2000AH 78H 56H 最后SP? 34H

12H 20006H 20007H 20008H 20009H 2000AH

7.在8086∕8088微处理器中,PUSH和POP指令在堆栈与寄存器或存储单元之间传送数据时,一次总是传送多少字节?答:2字节。

8.解释XLAT指令是怎样转换AL寄存器中的内容的。并编写一段程序用XLAT指令将BCD码的0~9转换成对应的ASCII,并将ASCII存入数组ARRAY中。

答:XLAT指令是通过AL寄存器加上BX寄存器联合组成的寻址方式找到目标地址后,将内容传送到AL寄存器中。程序如下:

.MODEL SMALL .STACK .DATA

BCD DB -7

BCD2ASCTAB DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H ARRAY

.CODE .STARTUP

DB ?

MOV LEA XLAT

MOV

.EXIT 0

AL,BCD

BX,BCD2ASCTAB

ARRAY,AL

END

9.下列ASCII字符串(包括空格符)依次存储在首地址为CSTRING的字节单元中: CSTRING DB ‘BASED ADDRESSING’

请编写指令将字符串中的第一个和第七个字符传送给DX寄存器。

MOV

DL,CSTRING

MOV DH,CSTRING+7

10.请编写指令将BX寄存器初始化为变量MYDAT的偏移地址。 MOV BX,OFFSET MYDAT或LEA BX,MYDAT 11.将变量名TABL的段地址送AX的指令是什么?

MOV AX,SEG TABL

12.设MEM是数据段中0A00H单元的符号名,其中存放的内容为0B0CH,以下各指令语句的执行结果是什么?

①MOV AX,MEM 答:

②LEA BX,MEM

三、程序分析题

1. A DW

B DW ┆ PUSH A PUSH B POP POP 试回答:

A B

1234H 5678H

0B0CH 0A00H

①上述程序段执行后(A)=5678H,(B)=1234H ②执行前SP=200H,执行后SP=200H

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

1.MOV

2.MOV 3.IN

4.POPF 5.POP

ES,BX CS,BX AL,DX AX 1234

(√)。 (×)。 (√)。 (×)。 (×)。 (√)。 (√)。 (×)。

6.PUSH A(A为字节单元) 7.执行LEA BX,TABLE与执行MOV BX,OFFSET TABLE效果一样 8.当执行LAHF和SHAF两条指令后,标志位不改变


刘臣奇主编-汇编语言程序设计-课外练习题参考答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:土地集约利用评价研究我的论文

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

马上注册会员

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