第4章汇编语言程序设计.docx

上传人:b****8 文档编号:9591776 上传时间:2023-02-05 格式:DOCX 页数:45 大小:65.24KB
下载 相关 举报
第4章汇编语言程序设计.docx_第1页
第1页 / 共45页
第4章汇编语言程序设计.docx_第2页
第2页 / 共45页
第4章汇编语言程序设计.docx_第3页
第3页 / 共45页
第4章汇编语言程序设计.docx_第4页
第4页 / 共45页
第4章汇编语言程序设计.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

第4章汇编语言程序设计.docx

《第4章汇编语言程序设计.docx》由会员分享,可在线阅读,更多相关《第4章汇编语言程序设计.docx(45页珍藏版)》请在冰豆网上搜索。

第4章汇编语言程序设计.docx

第4章汇编语言程序设计

第4章汇编语言程序设计.

第四章习题集

一、判断(正确的在括号画“√”,错误的画“×”

1.汇编语言程序语言必须由四部分组成。

2.汇编语言源程序中所使用的变量,必须在代码段中先定义,后引用。

(错

3.在汇编语言中,一般伪指令语句放在代码段中(错

4.逻辑操作符AND、OR、XOR或NOT,只能用于数字表达式。

(错

5.符号定义语句不占内存单元,变量定义语句占内存单元。

6.汇编语言源程序中至少有一个代码段。

(对

7.伪指令是指示性语句,不产生机器目标代码。

(√

8.伪指令BVAR:

DB‘ABCD’,200DUP(?

是合法伪指令。

9.伪指令DAT1DB7,8,9,10与DAT1DW07H,08H,09H,0AH所预置的数据是一样的。

10.8086CPU的中断向量表共占有1024个字节(00000H-003FFH,所以共有1024个中断。

[]

二、单项选择题

1.用高级语言编写的程序(C。

A、只能在基本种计算机上运行B、无需经过编译或解释,即可被计算机直接执行C、具有通用性和可移植性D、几乎不占用内存空间

2.一般地,我们将计算机指令的集合称为(B。

A.机器语言B.汇编语言C.模拟语言D.仿真语言

3.我们通常所说的“裸机”指的是(C。

A.只装备有操作系统的计算机B.不带输入输出设备的计算机

C.未装备任何软件的计算机D.计算机主机暴露在外

4.计算机的软件系统一般分为(C两大部分。

A.系统软件和应用软件B.操作系统和计算机语言

C.程序和数据D.DOS和Windows

5.计算机系统软件中的汇编程序是一种(C。

A.汇编语言程序B.编辑程序

C.翻译程序D.将高级语言转换成汇编程序的程序

6.假设V1和V2是用DW定义的变量,下列指令中正确的是:

A

A.MOVV1,20HB.MOVV1,V2

C.MOVAL,V1D.MOV2000H,V2

7.PC机所使用的标准键盘向主机发送的代码是A

A.ASCII码B.扫描码C.BCD码D.格雷码

8.8086CPU中断号为8的中断矢量存放在(C。

A.0FFFFH:

0008HB.0000H:

0008H

C.0000H:

0020HD.0020H:

0000H

9.已知变量VAR为字型,则TYPEVAR=(B。

A、1B、2C、3D、4

10.交换寄存器SI、DI的内容,正确的程序段是(AC。

A、PUSHSIB、PUSHSI

PUSHDIPUSHDI

POPSIPOPDI

POPDIPOPSI

C、MOVAX,SID、MOVAX,SI

MOVSI,AXMOVBX,DI

MOVDI,AXXCHGBX,AX

11.段定义语句以(B语句结束。

A.ENDB.ENDSC.ENDPD.ENDM12.若主程序段中数据段名为DATA,对数据段的初始化操作应为

A.MOVAX,DATAB.MOVAX,DATA

MOVES,AXMOVDS,AX

C.PUSHDSD.MOVDS,DATA

13..EXE文件产生在

A.汇编B.编辑C.用软件转换D.连接

14.定义双字变量的定义符是。

A.DWB.DQC.DDD.DT

15.下列存储器操作数的跨段前缀可省略的是。

A.DS:

[BP]B.SS:

[BP]C.ES:

[BX]D.ES:

[SI]

16.执行下列指令:

STR1DW‘AB’

STR2DB16DUP(?

CONTEQU$-STR1

MOVCX,CONT

MOVAX,STR1

HLT

后寄存器CL的值是c。

A.0FHB.0EHC.12HD.10H

17.与MOVBX,OFFSETVAR指令完全等效的指令是(D。

A.MOVBX,VARB.LDSBX,VAR

C.LESBX,VARD.LEABX,VAR

18.在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是(D。

A、WORDB、PAGEC、BYTED、PARA

19.BUFDW10HDUP(3DUP(2,10H,3,5

上述语句汇编后,为变量BUF分配的存储单元字节数是(160?

A、80HB、100HC、124D、192

20.在汇编语言程序的开发过程中使用宏功能的顺序是(C。

A、宏定义,宏调用B、宏定义,宏展开

C、宏定义,宏调用,宏展开D、宏定义,宏展开,宏调用

21.汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是(B。

A、名字项B、操作项C、操作数项D、注释项

22.编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有(D。

A、CMPB、SUBC、ANDD、MOV

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

A、INCCXJZMINUSB、SUBCX,OFFFFHJZMINUS

C、ANDCX,OFFFFHJZMINUSD、XORCX,OFFFFHJZMINUS

24.假设V1和V2是用DW定义的变量,下列指令中正确的是(A.

A.MOVV1,20HB.MOVV1,V2

C.MOVAL,V1D.MOV2000H,V2

25.假设VAR为变量,指令MOVBX,OFFSETVAR的寻址方式是(C。

A.直接寻址B.间接寻址C.立即寻址D.存储器寻址

三.多项选择题(每题有多个正确答案,选出所有正确答案,多选、少选均不得分1.8086指令的操作数可能有

A.0B.1C.2D.3

2.变量定义的伪指令助记符有:

A.DBB.DWC.DDD.DFE.DQF.DT

3.主程序与子程序之间传递参数可通过

A.堆栈B.存储器单元C.通用寄存器D.指令队列E.其他

4.汇编语言源程序经MASM汇编后可直接生成的文件是。

A..LSTB..CRFC..EXED..OBJE..ASMF..MAP

5.过程(子程序调用的形式有(ABCD。

A、段内直接B、段内间接C、段间直接D、段间间接

四.填空题

8.设当前的SP=0FFFH,执行PUSHF指令后,SP=(0FFDH,若改为执行INT20H指令后,则SP=(0FF9H。

2.23.当要求段的首地址只能被16整除时,需选择的定位方式为。

2.二进制编码的十进制数称为BCD码,它用

BCD码有和两种格式。

1.MOVAX,((VARLT6AND40OR((VARGE6AND50,当VAR﹤6时,汇编结果源操作数为。

2.程序段VAR1DB?

VAR2DW20DUP(58H,2DUP(?

VAR3DB‘ABCD’

.

.

.

MOVAX,TYPEVAR1

MOVBX,TYPEVAR2

MOVCX,LENGTHVAR2

MOVDX,SIZEVAR2

MOVSI,LENGTHVAR3

,。

3.段定义伪指令语句用语句表示开始,以语句表示结束。

4.ARRAYDW10DUP(5DUP(4DUP(20H,40H,60H语句执行后共占字节存储单元。

5.汇编语句中,一个过程有NEAR和FAR两种属性。

NEAR属性表示主程序和子程序内转移,FAR属性表示主程序和子程序段间转移。

6.DOS系统功能号应放在寄存器中。

7.子程序又称,它可以由

8.与指令MOVBX,OFFSETBUF功能相同的指令是。

10.设有伪指令ADB01H,23H,则执行指令

BDW2DUP(0

MOVAL,TYPEA后,(AL;

MOVBL,SIZEB后,(BL。

.设有伪指令ADB01H,23H,则执行指令

BDW2DUP(0

MOVAL,TYPEA后,(AL;

MOVBL,SIZEB后,(BL。

7.根据下面的指令和伪指令序列,AX寄存器的内容

TABDB1,2,3,4,5,6

ENTRYEQU3

MOVBX,OFFSETTAB

ADDBX,ENTRY

MOVAX,WORDPTR[BX]

8.对于下面两个数据段,偏移地址为10H和11H的两个字节中的数据是一样的吗?

为什么?

DTSEGSEGMENT|DTSEGSEGMENT

ORG10H|ORG10H

DATA1DB72H|DATA1DW7204H

DB04H|DTSEGENDS

DTSEGENDS|

(。

12.将下列文件类型填入空格:

(1.obj(2.exe(3.crf(4.asm(5.lst(6.map

编辑程序输出的文件有(;

汇编程序输出的文件有(;

连接程序输出的文件有(。

4.ORG1000H

XDB12H

YDWX

ZDDY

(DS=3800H,(BX=1000H,(SI=0002H

求下列指令执行完后指定寄存器的内容

MOVAX,[1000H];

MOVAX,[BX];H

MOVAX,[BX+SI];H

MOVAX,[Y+1];

LDSSI,Y;H

6.数据段中有以下定义:

ARRAY1EQU16H

ARRAY2DW16H

请指出下面两条指令的寻址方式:

MOVAX,ARRAY1;寻址方式:

MOVAX,ARRAY2;寻址地址:

8.内存单元初始化内容为:

(2000H:

2A00H--(2000H:

2A02H分别为0FH、0EH、0DH,(2000H:

2A10H--(2000H:

2A12H分别为09H、08、07H。

执行下列程序后,请填写存储单元的内容:

MOVAX,2000H

MOVDS,AX

MOVES,AX

MOVSI,2A10H

MOVDI,2A00H

CLD

MOVCX,3

L:

MOVAL,[DI]

MOVSB

DECSI

MOV[SI],AL

INCSI

LOOPL

HLT

(12000H:

2A00H=09H。

(22000H:

2A11H=0EH。

(32000H:

2A12H=0DH。

四.程序分析题

1.执行下面的程序段后,CX的内容是(3.

DAT1DB12H,34H,56H

N=$-DAT1

MOVCX,N

2.执行下面的程序段后,AX的内容是(12H,BX的内容是(3412H.

M1DB12H,34H

MOVSI,OFFSETM1

MOVAX,0

MOVAL,[SI]

MOVBX,WORDPTR[SI]

3.源程序如下:

STRDB‘ABCDEF0123456789’

MOVBX,OFFSETSTR

MOVAL,65H

PUSHAX

ANDAL,0FH

XLAT

MOVDL,AL

POPAX

ADDAL,08H

DAA

MOVDH,AL

CMPDH,32H

执行上面程序段后,(DL=(,(DH=(。

46H73H

4.源程序如下:

MOVAX,SEGTABLE;TABLE为表头

MOVES,AX

MOVDI,OFFSETTABLE

MOVAL,‘0’

MOVCX,100

CLD

REPNESCASB

问:

1该段程序完成什么功能?

2该段程序执行完毕之后,ZF和CX有几种可能的数值?

各代表什么含义?

(1从目的串中查找是否包含字符‘0’,若找到则停止,否则继续重复搜索。

(2ZF=1,说明已找到字符

ZF=0,说明未找到字符

CX0,说明中途已找到字符退出

CX=0,且ZF=0说明串中无字符‘0’

5.源程序如下:

DATASEGMENT

S9DB0,1,2,3,4,5,6,7,8,9

DATAENDS

LEASI,S9

LEA,DI,S9+1

MOVCX,5

LOP:

MOVAL,[SI]

XCHGAL,[DI]

MOV[SI],AL

ADDSI,2

ADDDI,2

LOOPLOP

上述程序段运行后,S9开始的10个字节存储单元内容是什么?

1,0,3,2,5,4,7,6,9,8

6.源程序如下:

MOVAL,38H

MOVBL,49H

CALLSUBO

INCAL

DECCL

SUBOPROC

ADDAL,BL

MOVCL,AL

DAA

RET

SUBOENDP

上述程序段运行后,AL=________87h__________,CL=_______81h_________7.源程序如下:

DA3EQUWORDPTRDA4

DA4DB0ABH,89H

SHRDA3,1

MOVDX,DA3

SHLDA4,1

MOVCX,DA3

上述程序段运行后,CX=________44aah_____,DX=______44d5h_________

8.下面程序是将10个8位无符号数按递减次序排序,请将程序填写完整。

DATASEGMENT

ARRAYDB05H,78H,FFH,7BH,00H

DB8CH,20H,A0H,F0H,60H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

MAINPROCFAR

START:

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

AB1:

MOVSI,OFFSETARRAY

MOVBL,0

MOVCX,10

AGAIN:

MOVAL,[SI]

INCSI

CMPAL,[SI]

CD1

MOVAH,[SI]

MOV[SI],AL

DECSI

MOV[SI],AH

INCSI

MOVBX,1

CD1:

LOOPAGAIN

DECBL

AB1

RET

MAINENDP

CODEENDS

ENDSTART

9.下面的程序段是统计AX中16位二进制数1的个数,并将结果放在CX中,填空使程序完成预定的功能。

XORCX,CX

L1:

ANDAX,AX

JZSTOP

SHLAX,1

INCCX

L2:

JMPL1

STOP:

HLT

10.下面的程序段是求8个无符号数累加和,最后结果用双字表示,存在YAH和YAL单

元,填空使程序完成预定的功能。

DATASEGMENT

TABLEDW34,789,67,78,345,89,78,60

YAHDW0

YALDW0

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,0

XORAX,AX;清AX

MOVBX,OFFSETTABLE

MOVCX,8

CLC

LP:

ADDAX,[BX]

DON:

INCBX

INCBX

LOOPLP

MOVYAL,AX;存和

MOVYAH,DX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

11.两个非组合BCD数(BY0,BY1进行十进制减法,并将差求绝对值后保存在SD单元。

MOVAL,BY0

CMPAL,BY1

JNCL1

MOVAH,BY1

MOVBY1,AL

MOVAL,AH

L1:

SUBAL,BY1

MOVSD,AL

12.附加段有一块长50个字的数据区,首址为DEST,现将数据区初始化为0FFFFH。

LEADI,DEST

MOVCX,50*2

CLD

MOVAL,0FFH

13.下面是某数据段定义,在表中标出各字节单元的值,并回答问题。

DATASEGMENT

PADB1

PBDW5

PPEQU2

PCDBPPDUP(0

DATAENDS

TYPEPA=(1TYPEPB=(3SIZEPA=(1SIZEPB=(2SIZEPC=(2

14.源程序如下:

MOVCL,4

MOVAX,[2000H]

SHLAL,CL

SHRAX,CL

MOV[2000H],AX

试问:

若程序执行前,数据段内(2000H=09H,(2001H=03H,则执行后有(2000H=_____,(2001H=______。

本程序段的功能_________________________。

(2000H=39H(2分(2001H=00H(2分

将(2000H,(2001H两相邻单元中存放的未组合型BCD码压缩成组合型BCD码,并存入

(2000H单元,0(2001H(2分

15.阅读程序,并完成以下要求(10分

DA4DB0ABH,89H

DA3EQUWORDPTRDA4

SHRDA3,1

MOVDX,DA3

SHLDA4,1

MOVCX,DA4

上述程序段运行后,CX=,DX=

16.阅读程序,并完成以下要求(10分

MOVCL,04H

MOVDX,1234H

MOVAX,5678H

SHLDX,CL

MOVBL,AH

SHLAX,CL

SHRBL,CL

ORDL,BL

a给程序段加上注释;b(DX=,(AX=

c由上面的结果可以看出该程序的功能是:

左移动4位

17.源程序如下:

(6分

MOVCX,9

MOVAL,01H

MOVSI,1000H

NEXT:

MOV[SI],AL

INCSI

SHLAL,1

LOOPNEXT

试问:

执行本程序后有:

AL=_____;SI=______;CX=______;

本程序的功能是______________________________。

0(1分1009H(1分0(1分

对数据段内1000H~1008H单元置数,依次送入1,2,4,8,16,32,64,128,0共九个(3分

3.设某数据段:

DATASEGMENT

ORG20H

NUM1=8

NUM2=NUM1+10H

DA1DB'COMPUTER'

DB0AH,0DH

COUNTEQU$-DA1

DA2DW'CO','MP','UT','ER'

DATAENDS

试回答:

(1DA1的偏移地址是:

__20H_________________

(2COUNT的值是____________10_______________________

(3DA2+5字节单元的内容是_____T_____________________

18.用减法实现除法。

X是被除数,Y是除数,处理结束后商存放在RESULT,余数存放

在XYMOD。

.MODELSMALL.386.STACK.DATAXDW7YDW2.DATA?

RESULTDW?

XYMODDW?

.CODE

.STARTUP

MOVAX,X

MOVBX,Y

MOVCX,0

.WHILE_____SUBAX,BX

_____.ENDW

MOVRESULT,CX

MOVXYMOD,AX

.EXIT

END

①AX>=BX②INCCX

19.从BUF开始的11个单元中存放着11个整数,找出这11个数中正数并且是偶数的个

数存入R中。

DATASEGMENT

BUFDB–2,5,-3,6,100,0,-20,-9,8,-110,21

RDW?

DATAENDS

CODESEGMENT

BEGIN:

MOVAX,DATA

LEABX,BUF

MOVCX,N

被除数

除数商720

521

322

余数

→123←商

图4-15用减法实现除法示意图

LOPA:

CMP[BX],BYTEPTR0

TEST[BX],BYTEPTR1

INCAX

NEXT:

INCBX

DECCX

MOVR,AX

MOVAH,4CH

INT21H

CODEENDS

END

①$-BUF

②ASSUMECS:

CODE,DS:

DATA

③MOVDS,AX

④MOVAX,0

⑤JLENEXT

⑥JNZNEXT

⑦JNZLOPA

⑧BEGIN

五.简答题

1.变量和标号有何区别?

变量有哪些属性?

已有MOVAL,INF[BP+SI]与MOVAL,ES:

INF[BP+SI]两条指令,试问:

其源操作数采用何种寻址方式?

是字或是字节操作?

两条指令有何区别?

源操作采用基址+变址寻址方式是字节操作

MOVAL,INF[BP+SI]—访问的是堆栈段

MOVAL,ES:

INF[BP+SI]—访问的是附加段,实现了段超越

2.有变量定义的伪指令

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1