汇编语言程序设计习题答案.docx

上传人:b****6 文档编号:6114720 上传时间:2023-01-03 格式:DOCX 页数:31 大小:52.63KB
下载 相关 举报
汇编语言程序设计习题答案.docx_第1页
第1页 / 共31页
汇编语言程序设计习题答案.docx_第2页
第2页 / 共31页
汇编语言程序设计习题答案.docx_第3页
第3页 / 共31页
汇编语言程序设计习题答案.docx_第4页
第4页 / 共31页
汇编语言程序设计习题答案.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

汇编语言程序设计习题答案.docx

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

汇编语言程序设计习题答案.docx

汇编语言程序设计习题答案

汇编语言程序设计部分习题答案

第一章

1.1指令:

指令是规定处理器完成某种特定操作的命令代码,指令一般包含操作码和操作数两部分,操作码说明该指令的功能及所要完成的操作,操作数指出该操作对象及结果的存储位置。

程序:

程序是让计算机完成某些操作、实现某种功能的有序的指令集合。

1.3P4

1.4对的,P3最上面一句话,面向机器(硬件)的低级语言。

1.5答案:

P3表1-1上面的一段话

1.6对

1.7CA

1.8B

1.9D

1.10~1.14略

1.151011+0100=1111

1010-0111=0011

1010×0101=110010

00101010÷0110=0111

1.16略

1.17X=40=00101000

Y=120=01111000

Z=-18=11101110

[X]补+[Y]补=00101000+01111000=10100000溢出

[X]补+[Z]补=00101000+11101110=01001100未溢出

[Y]补-[Z]补=01111000-11101110=100010100溢出

[Z]补-[X]补=11101110-00101000=11000110未溢出

1.18A

1.19A

1.20B

1.21

记住:

A=41H=65

a=61H=97

0=30H=48

其他略

1.22

无符号整数

8位补码整数

压缩BCD码

ASC码

35H

53

53

35

‘5’

32H

50

50

32

‘2’

5AH

90

90

无效

‘Z’

72H

114

114

72

‘r’

答:

16位补码表示的整数

无符号数

00FFH

255

255

FFFFH

-1

65535

519H

1035

1035

11111111B

-1(8位负数补码扩展到16位表示,在原8位补码最高位前补8个1,书上P9页中间段落)

255(无符号数扩展,前面补8个0)

第二章

2.1略

2.2略

2.3intel80x86系列微型机开机启动时,首先进入实模式,这种模式下可寻址的内存空间最大范围是00000H~FFFFFH,使用20根地址线。

2.4intel80x86系列微处理器中,8086是典型的16位微处理器,它只能工作于实模式。

80386是最典型的32位微处理器,有实模式、保护模式、虚拟8086模式,在保护模式下最能发挥其功能。

2.5不能对ip指针随意读写。

2.6~2.13ABCADBDB

2.14物理地址分别是:

A31052H

B1AF80H

C19A10H

D1A963H

2.15~2.19DBCAB

2.20

ZF

SF

CF

OF

PF

AF

1200+8000

0

1

0

0

1

0

9002+6FFE

1

0

1

0

1

1

5270+E990

0

0

1

0

1

1

2+22

0

0

0

0

1

0

①88H

②4422H

③44H

④12000H

因为计算机为偶地址寻址,如果使用奇地址需要两次寻址。

⑤012004H,读走后IP=0005H

 

第三章

3.2ADDAX,BX寄存器寻址方式

MOVCX,1970立即寻址方式

MOVBX,[SI]寄存器间接寻址方式

CMPBX,TABLE直接寻址方式

CMPAX,[BP+DI]基址变址寻址方式

CMPAX,ARRAY[BX][DI]相对基址变址寻址方式

MOVAL,200H两个操作数类型不一致

ADDDL,AX两个操作数类型不一致

MOV68,AX立即数不能做目的操作数

MOVDS,2000H立即数不能不能直接送段寄存器

CMPAL,WORDPTR[BX]两个操作数类型不一致

MOVCS,BX目的操作数不可以是段寄存器CS

DEC[SI+DI]操作数类型不明确且寻址方式不能两个同为变址寄存器

CMP[BX],[SI]两个操作数不能同时为存储器操作数

MOVAX,[DX]寄存器间接寻址方式中只能使用BX、BP、SI、DI中的一个

MOVDX,ES:

AXAX不能作为寄存器间接寻址方式的寄存器且应该加[]。

MOVAX,BX不影响标志位

CMPAX,BXCF=0OF=0SF=1ZF=0

INCBL不影响CFOF=1SF=0ZF=1

JNZLL不影响标志位

CMPCL,-1CF=0OF=0SF=0ZF=0

ADDAL,BLCF=1OF=1SF=0ZF=0

3.5

MOVAX,DS:

[1126H]DS:

[1126H]=13126H

MOVAX,[SI]DS:

[SI]=12026H

MOVAX,[SI+6]DS:

[SI+6]=1202CH

CMPAX,VALUE[SI+BP]SS:

[VALUE+SI+BP]=30176H

INCBYTEPTR[BP]SS:

[BP]=30100H

ADDDX,SS:

[SI]SS:

[SI]=30026H

3.6~3.10BBCACD

3.11

–E命令是用来显示或者修改内存单元的内容的命令。

答:

因为这三个逻辑地址指向同一个物理地址120FFH,所以显示的是同一个内存单元的数据,当然完全相同。

3.12①该单元内容没有改变,还是00H

②81124H

③11H

④3322H

 

答:

执行指令之后,81120H~81125H单元内容变为

81120H

00H

81121H

11H

81122H

44H

81123H

11H

81124H

44H

81125H

55H

3.14内存0310:

000AH字单元的内容是0310H,DL中内容是10H。

3.15①循环了5次

②循环了65536

3.16①累加器AL累加了10次,从0变位了10.

②比较AX,BX中的内容,如果相等,将Value指向的内存单元置为0,若不相等,将Value指向的内存单元置为-1.

③20+19+……+1

④屏幕上显示字符‘B’

⑤屏幕上依次显示2、4、6、8

3.17D

3.18

AX=20CDH

AH=CDH

SI=0001H

AL=20H

AX=8A0FH

BX=0001H

AL=FFH

DI=0012H

AX=0101H

正序输出26个小写字母,回车换行之后,再逆序输出26个小写字母。

程序设计为:

DATASSEGMENT

;此处输入数据段代码

SCOREDB80,90,86,78,92,75,78,79,67,91

DATASENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS

START:

MOVAX,DATAS

MOVDS,AX

;此处输入代码段代码

MOVCX,10

LEABX,SCORE

LL:

MOVAL,[BX]

ADDAL,2

INCBX

LOOPLL

EXIT:

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

3.21

程序设计为:

CODESSEGMENT

ASSUMECS:

CODES

START:

MOVCX,9

MOVDL,39H

MOVAH,2

LL:

INT21H

DECDL

LOOPLL

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

第四章

4.2~4.7DCCCCB

4.8NUM=4

COUNT=4

4.9BUF是存储在内存单元中占一个字节,VAL不占内存空间

在debug中MOVAL,[BUF偏移地址]

MOVAH,26;(立即数直接送入AH中)

BUF存储在内存单元中,占内存单元,VAL不占内存单元。

汇编时

MOVAL,[buf的偏移地址]

MOVAL,26H

依次是:

F9H

12H

44H

3CH

20H

00H

FFFFH

03H

各条指令中原操作数的值为

10

12

4

22

4.12

依次是

BIAEFDHCJG

依次是

ORG0100H

INT20H

ENDSTART

依次是

XDW260

DSEGENDS

MOVAX,4C00H

ENDBEGIN

程序设计为:

DATASSEGMENT

;此处输入数据段代码

ARRAYDW1970H,310H,68H,227H

COUNT=4

SUMDW?

DATASENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS

START:

MOVAX,DATAS

MOVDS,AX

;此处输入代码段代码

MOVCX,COUNT

MOVAX,0

MOVSI,OFFSETARRAY

L1:

ADDAX,[SI]

INCSI

INCSI

LOOPL1

MOVAX,4C00H

INT21H

CODESENDS

ENDSTART

.MODELSMALL

.DATA

ARRAYDW1970H,310H,68H,227H

COUNT=4

SUMDW?

.CODE

START:

MOVAX,@DATA

MOVDS,AX

;此处输入代码段代码

MOVCX,COUNT

MOVAX,0

MOVSI,OFFSETARRAY

L1:

ADDAX,[SI]

INCSI

INCSI

LOOPL1

MOVAX,4C00H

INT21H

ENDSTART

COM类型

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

CSEG

ORG0100H

START:

MOVCX,COUNT

MOVAX,0

MOVSI,OFFSETARRAY

L1:

ADDAX,[SI]

INCSI

INCSI

LOOPL1

EXIT:

INT20H

ARRAYDW1970H,310H,68H,227H

COUNT=4

CSEGENDS

ENDSTART

 

第四章汇编语言程序设计习题集

一、单项选择题

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

A.只能在基本种计算机上运行B.无需经过编译或解释,即可被计算机直接执行

C.具有通用性和可移植性D.几乎不占用内存空间

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

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

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

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

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

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

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

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

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

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

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

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

(   )

A.MOVV1,20HB.MOVV1,V2

C.MOVAL,V1D.MOV2000H,V2

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

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

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

A.0FFFFH:

0008HB.0000H:

0008H

C.0000H:

0020HD.0020H:

0000H

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

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

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

A..LST      B..CRF     C..EXE     D..OBJ    E..ASM     F..MAP

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

12.若主程序段中数据段名为DATA,对数据段的初始化操作应为(   )。

A.MOVAX,DATA                B.MOVAX,DATA     

  MOVES,AX                     MOVDS,AX

C.PUSHDS                     D.MOVDS,DATA

13..EXE文件产生在(   )之后。

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

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

A.DW          B.DQ           C.DD           D.DT

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

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

16.执行下列指令:

STR1 DW ‘AB’

STR2 DB16DUP(?

CONT EQU$-STR1

MOV CX,CONT

MOV AX,STR1

HLT

后寄存器CL的值是(   )。

A. 12H      B.0EH       C. 0FH       D.10H

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

   

 A.MOVBX,VAR     B.LDSBX,VAR   

 C.LESBX,VAR     D.LEABX,VAR   

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

   

 A.WORD     B.PAGE     C.BYTE     D.PARA   

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

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

   

 A.80H    B.100H    C.124    D.192   

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

   

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

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

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

   

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

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

   

A.CMP   B.SUB   C.AND   D.MOV   

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

   

 A.INCCXJZMINUS    B.SUBCX,OFFFFHJZMINUS   

 C.ANDCX,OFFFFHJZMINUS   D.XORCX,OFFFFHJZMINUS   

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

A.MOVV1,20HB.MOVV1,V2

C.MOVAL,V1D.MOV2000H,V2

二.多项选择题(每题有多个正确答案,选出所有正确答案,多选.少选均不得分)

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

(      )。

A.DB    B.DW    C.DD     D.DF     E.DQ     F.DT

2.主程序与子程序之间传递参数可通过(      )进行。

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

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

A.PUSHSIB.PUSHSI

PUSHDIPUSHDI

POPSIPOPDI

POPDIPOPSI

C.MOVAX,SID.MOVAX,SI

MOVSI,AXMOVBX,DI

MOVDI,AXXCHGBX,AX

4.过程(子程序)调用的形式有(      )。

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

三.填空题

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

2.程序段  VAR1 DB?

VAR2 DW20DUP(58H,2DUP(?

))

VAR3 DB‘ABCD’

  .

  .

  .

MOV AX,TYPE VAR1

MOV BX,TYPE VAR2

MOV CX,LENGTHVAR2

MOV DX,SIZEVAR2

MOV SI,LENGTHVAR3

AX=   ,BX=   ,CX=   ,DX=    ,SI=   。

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

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

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

NEAR属性表示主程序和子程序      ,FAR属性表示主程序和子程序     。

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

7.子程序又称 过程,它可以由     语句定义,由  ret语句结束,属性可以是       或     。

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

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

BDW2DUP(0)

MOVAL,TYPEA后,(AL)=;

MOVBL,SIZEB后,(BL)=。

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

TABDB1,2,3,4,5,6

ENTRYEQU3

MOVBX,OFFSETTAB

ADDBX,ENTRY

MOVAX,WORDPTR[BX]

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

(1).obj

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

编辑程序输出的文件有      ;

 连接程序输出的文件有      。

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

ARRAY1EQU16H

ARRAY2DW16H

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

MOVAX,ARRAY1;寻址方式:

   

MOVAX,ARRAY2;寻址地址:

     

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

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),所以共有256个中断。

(     )

五.程序分析题

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

DAT1DB12H,34H,56H

N=$-DAT1

MOVCX,N

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

M1DB12H,34H

MOVSI,OFFSETM1

MOVAX,0

MOVAL,[SI]

MOVBX,WORDPTR[SI]

3. 源程序如下:

STR   DB  ‘ABCDEF0123456789’

MOV   BX ,OFFSET  STR 

MOV   AL ,65H 

PUSHAX

AND   AL ,0FH 

XLAT

MOVDL,AL

POPAX

ADDAL,08H

DAA

MOVDH,AL

CMPDH,32H

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

4.源程序如下:

MOVAX,SEGTABLE;TABLE为表头

MOVES,AX

MOVDI,OFFSETTABLE

MOVAL,‘0’

MOVCX,100

CLD

REPNESCASB

问:

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

(     )

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

各代表什么含义?

(     )

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   

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

当前位置:首页 > 自然科学

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

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