实验复习题新.docx

上传人:b****4 文档编号:12202803 上传时间:2023-04-17 格式:DOCX 页数:22 大小:22.95KB
下载 相关 举报
实验复习题新.docx_第1页
第1页 / 共22页
实验复习题新.docx_第2页
第2页 / 共22页
实验复习题新.docx_第3页
第3页 / 共22页
实验复习题新.docx_第4页
第4页 / 共22页
实验复习题新.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

实验复习题新.docx

《实验复习题新.docx》由会员分享,可在线阅读,更多相关《实验复习题新.docx(22页珍藏版)》请在冰豆网上搜索。

实验复习题新.docx

实验复习题新

09实验复习题

一、列出基于8086寄存器组的14个寄存器,并分别说明各寄存器的功能(对于标志寄存器,要求分别写出各标志位名称及功能)。

写出基于8086CPU的各种寻址方式,并对与内存访问无关的和内存访问有关的寻址方式各举一例说明。

二、请详细描述MASM的上机过程,要求写出各环节采用的扩展名、各环节的作用,然后说说列表文件、交叉引用文件是如何产生的及如何查看其内容的、有何作用,汇编过程显示了哪些信息?

COM文件生成有什么要求。

三、DEBUG调试的是哪种类型的文件?

请写出DEBUG中使用的命令E、R、P、F、G、A、U、Q它们相应的功能,并分别说明使用场合,再各举一例说明(注明例子的具体功能)。

1.如何在DEBUG中执行可执行程序(.EXE文件)?

2.为什么把书上的程序输入进debug中会报告有很多error?

3.debug中T命令与P命令使用有何差别?

4.debug里用d命令显示出来的数据怎么理解?

以D命令显示内容的其中一行。

0B2E:

0200E8DAE146E8ACDF74-0DE84500ACE84100...F...t..E...A.为例说明。

5.如何找到debug.exe程序?

在windows中如何出现debug来汇编?

6.如何在DEBUG调试程序中执行程序中的一段?

7.下面一段信息是使用DEBUG命令的结果,则INT10H的中断服务程序的入口地址的偏移量是______,段基址是______。

-D0:

0

0000:

0000893E7EBEF4067000-1600400BF4067000

0000:

0010F406700054FF00F0-79EA00F021EA00F0

0000:

0020F31AA6167422A616-5700400B6F00400B

0000:

00308700400B9F00400B-B700400BF4067000

0000:

0040C923A6164DF800F0-41F800F0C5034CCD

0000:

005039E700F0A019BC0C-760102E056D400F0

0000:

006000E000F09019BC0C-6EFE00F0EE067000

0000:

007053FF00F0A4F000F0–220500006C5600C0

四、利用系统功能调用(21H)如何实现输出一个字符、输入一个字符、输出一个字符串、输入一个字符串、返回操作系统,掌握其调用格式规范并能给出相应的实例(各例均需说明其功能),接收字符串能统计字符串中数字符号、大小字母的数量,输入多位二、八、十六进制数送到指定寄存器中,以二、八、十六进制形式输出指定寄存器中内容。

五、改错题

1.下列程序中至少有10个语法性的错,请将这些错误找出来。

1:

********EXAM?

?

.?

******

2:

DSEGSEGMENT

3:

ARGXDB100

4:

RLTDB?

5:

DSEGEND

6:

CSEGSEGENT

7:

ASSUMECS:

CSEG;DS:

DSEG

8:

BEGIN:

MOVAX,DATA

9:

MOVDS,AX

10:

MOVAX,ARGX

11:

ORAL,AL

12:

JSABS1

13:

JEMOVE

14:

CMPAL,8

15:

JBEONE

16:

CMPAL,0FH

17:

JGEMOVE

18:

SHLAL,2

19:

ADDAL,ARGX

20:

SUBAL,2

21:

JMPMOVE

22:

ONEADDAL,10

23:

JMPMOVE

24:

ABS1NEGAL,AL

25:

MOVEMOVRLT,AX

26:

HALT

27:

DSEGENDP

28:

ENDSSTART

2.下列程序中至少有10个语法性的错,请将这些错误找出来。

1:

;********EXAM?

?

.?

******

2:

DSEGSEGMENT

3:

DATADB14H,26H,03H,8A,11H,FFH

4:

MAX:

DB?

5:

DATAENDS

6:

CSEGSEGMENT

7:

ASSUMECS:

CSEG:

DS:

DSEG

8:

SMAXMOVAX,DATA

9:

MOVDS,AX

10:

LEASI,DATA

11:

MOVAL,[SI]

12:

AGAN:

INCSI

13:

MOVBL,[SI]

14:

CMPBL,FFH

15:

JELOAD

16:

CMPAL,BX

17:

JAAGAIN

18:

MOVAL,BL

19:

ADDAL,ARGY

20:

JRAGAIN

21:

LOD:

MOVMAX,AX

22:

HALT

23:

CSEGENDP

24:

ENDSSMAX

3.已知下述程序是从两个无符号数中选出较大者送入MAX中,但程序有错,请改正。

1:

DSEGSEGMENT

2:

DAX:

DBA0H

3:

DAYDB300

4:

MAXDW0

5:

DSEGEND

6:

CSEGSEGMENT

7:

ASSUMECS:

CSEG;DS:

DSEG

8:

BEGIN:

MOVDS,DSEG

9:

MOVAL,DAX

10:

CMPAL,DAY

11:

JGLMAX

12:

MOVAL,DAY

13:

LMAXMOVMAX,AL

14:

HLT

15:

CSEGENDS

16:

ENDSTART

4.下面是从一组数据中找最大数的程序,该程序有逻辑性的错误,请将错误找出并改正过来。

已知数据为不带符号的字数据,并存放在LIST开始的单元中,数据的个数存放在CNT字单元,找出的最大值存放在MAX单元。

1:

DSEGSEGMENT

2:

LISTDW1,200,30,400,0,7,4000

3:

CNTDB7

4:

MAXDW?

5:

DSEGENDS

6:

CSEGSEGMNET

7:

ASSUMECS:

CSEG,DS:

DSEG

8:

FMAX:

MOVDX,DSEG

9:

MOVDS,AX

10:

LEASI,LIST

11:

MOVCX,CNT

12:

CLD

13:

LODSW

14:

DECCX

15:

CMPAX,[SI]

16:

JLESMALL

17:

LODSW

18:

SMALL:

INCSI

19:

INCSI

20:

DECCX

21:

LOOPAGAIN

22:

MOVMAX,SI

23:

HLT

24:

CSEGENDS

25:

ENDSTART

5.下列程序求一组带符号字节数据的平均值,数据的首地址为DATA,数据个数存放在CNT字单元,但程序有逻辑错误,请将错误改正过来,使之完成预定功能。

1:

DSEGSEGMENT         

2:

DATADB100,-100,90,20,-120,60

3:

CNTDW0005H

4:

AVERDB?

5:

DSEGENDS

6:

CSEGSEGMENT

7:

ASSUMECS:

CSEG,DS:

DSEG

8:

MAINPROCFAR

9:

PUSHDS

10:

XORDX,DX

11:

PUSHDX

12:

MOVAX,DS

13:

MOVDS,AX

14:

MOVSI,OFFSETDATA

15:

MOVCX,OFFSETCNT

16:

AGAIN:

ADDDL,[SI]

17:

ADCDH,0

18:

DECCX

19:

LOOPAGAIN

20:

DIVCL

21:

MOVAVER,AL

22:

RET

23:

MAINENDP

24:

CSEGENDS

25:

ENDMAIN

6.下述程序执行后,应将DATA数组中的最大值存入MAX单元,数组元素为带符号

字节数据,数据个数在CNT单元。

现已知程序有错,请改正,使之完成预定功能。

1:

DSEGSEGMENT

2:

DATADB12H,203Q,56H,7E,63H,128

3:

CNTDB06

4:

MAXDW0

5:

ASSUMECS:

DSEG,CS:

DSEG

6:

FMAXMOVAX,[SI]

7:

CMPAX,[SI+1]

8:

JAFMAX1

9:

MOVAL,[SI+1]

10:

FMAX1:

INCSI

11:

DECCX

12:

LOOPFMAX

13:

RET

14:

MAIN:

PROCFAR

15:

PUSHCS

16:

XORAX,AX

17:

PUSHAX

18:

MOVCX,CNT

19:

CALLFMAX

20:

MOVMAX,AX

21:

RET

22:

MAIN:

ENDP

23:

DSEGENDP

24:

ENDMAIN

六、写出完成下列功能的程序段

1.将一个字节的立即数送到地址为NUM的存储单元中。

2.将一个8位立即数与地址为BUF的存储单元内容相加并放回BUF单元中。

3.将地址为ARRAY的存储单元中的字数据循环右移一位。

4.将16位立即数与地址为MEM的存储单元中的数比较。

5.测试地址为BUFFER的字数据的符号位。

6.将AX寄存器及CF标志位同时清零。

7.用直接寻址方式将首地址为ARRAY的字数组中第5个数送往寄存器BX中。

8.用寄存器寻址方式将首地址为ARRAY的字数组中第5个数送往寄存器BX中。

9.用相对寻址方式将首地址为ARRAY的字数组中第8个数送往寄存器BX中。

10.用基址变址寻址方式将首地址为ARRAY的字数组中第N个数送往寄存器BX中。

11.将首地址为BCD_BUF存储单元中的两个压缩BCD码相加,和送到第三个存储单元中。

12.将AL中的两位BCD码分离,分别存放DL和DH中。

13.将DL中的低4位二进制数转换成16进制数的ASCII码。

14.将AL中的8位二进制数高4位和低4位交换。

15.将AL和BL中的非压缩BCD码合并成一个压缩的BCD码(BL作高位),存在AL中。

16.将AL中的8位有符号数转换成它的绝对值。

17.用串扫描指令在一个字符串中查找字符'*'。

18.将输入的大写字母改变成小写输出。

19.输入一个字母,然后输出它的后续字母。

20.将DX:

AX寄存器中的32位数向右移两位。

21.完成计算7×8。

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

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

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

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

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

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

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

23.利用移位、传送和加法指令,完成AX与10的乘法运算。

24.编写指令序列,测试DL寄存器的低4位是否为0。

25.用尽可能少的指令分别实现下述功能

⑴如果AH的第4,3位为00,则将AH清0,否则置全1。

  

⑵如果AH的第4,3位为01,则将AH清0,否则置全1。

⑶如果AH的第4,3位为10,则将AH清0,否则置全1。

⑷如果AH的第4,3位为11,则将AH清0,否则置全1。

⑸如果AH中的数据为偶数,则将AL清0,否则将AL置0FFH。

⑹如果AH中的数据为正数,则将AL清0,否则将AL置0FFH。

⑺如果AH中的数据满足偶校验,则将AL清0,否则将AL置0FFH。

⑻设AX和BX分别存放着一个无符号的整数,如果AX中的数据是BX中数据的整数倍,则将DX清0,否则将DX置全1。

⑼如果BX中的数据与CX中的数据相加产生溢出,则将AL清0,否则将AL置0FFH。

26.假设数据段定义如下:

DATASEGMENT

STRINGDB'abcde'

COUNT=5

DATAENDS

现想用指令REPNZSCASB从地址STRING开始正向查找元素'c',试写出有关的程序段。

27.假设数据段定义如下:

DATASEGMENT

STR1DB'abcdef'

STR2DB'abcdfe'

COUNT=6

FLAGDB0

DATAENDS

现想用指令CMPSB比较两个串STR1和STR2是否相等,若相等则将FLAG单元置1,否则清0,试写出有关的程序段。

28.将DX:

BX:

AX中的数右移4位。

29.字变量ADDR的段地址在DS中,将ADDR字单元中1的个数存入CX 。

(例如:

[ADDR]=1000000100000100B,则1的个数为3 )

七、程序填空题(每空格只能填一条指令)

1.下面程序段判断CX和BX中的符号位是否相同。

如相同,AL置0,否则AL置-1。

试在空白处填上合适的指令。

____________________

ANDCX,8000H

___________________

MOVAL,0FFH

JMPEXIT

ZERO:

MOVAL,0

EXIT:

2.下面程序段是判AL和BL中的数据是否同号,若是,则把AL中的数据变负并送到AH中,否则0→AH。

横线处填入适当指令(每处仅填一条指令)。

____________

JNSK

MOVAH,0

JMPEND0

K:

____________

MOVAH,AL

END0:

……

3.下面程序执行后,AL的内容为ARRAY数组中的最小数,在空白处各填一条指令。

ARRAYDB3,5,-3,-2,4,5,-8,6

MOVCX,7

MOVDI,0

MOVAL,ARRAY

A1:

INCDI

____________

JLEA2

MOVAL,ARRAY[DI]

A2:

_______________

4.程序段的功能是依次产生0~9的10个ASCII码,并存入BUF1数据区,请在空白处填上指令(每一空白处仅填一条指令)。

BUF1DB10DUP(?

LEABX,BUF1

MOVCX,10

XORAL,AL

LOP:

MOVAH,AL

ADDAL,30H

______

INCBX

______

INCAL

LOOPLOP

5.以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中。

BUFDB5,6,7,58H,62,45H,127,……

COUNTEQU$-BUF

MAXDB?

MOVBX,OFFSETBUF

MOVCX,COUNT-1

MOVAL,[BX]

LOP1:

INCBX

_____________________

JAENEXT

MOVAL,[BX]

NEXT:

DECCX

_____________________

MOVMAX,AL

6.已知数据段DAT单元存放某一数N(-6≦N≦6)下面的程序段用查表法求数N的平方值,结果送SQR单元,请将程序填写完整。

TABLEDB0,1,4,9,16,25

DATDBN

SQRDB?

LEABX,TABLE

MOVAL,DAT

_______

JGENEXT

_______

NEXT:

XLAT

HLT

7.下面程序段完成将存储单元A1中一个压缩型BCD码拆成二个非压缩型BCD码,高位BCD码存放在A3单元,低位BCD码存放在A2单元,再分别转换为对应的ASCⅡ码。

请将程序补充完整。

MOVAL,A1

MOVCL,4

__________

ORAL,30H

MOVA3,AL

MOVAL,A1

__________

ORAL,30H

MOVA2,AL

8.现有下列数据段:

  DATASEGMENT

  STR1DB‘ABCDEFGHIJKL'

  COUNTEQU$-STR1

  BUFDBCOUNTDUP(0)

  DATAENDS

下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。

试把程序中所空缺的指令填上。

  MOVSI,OFFSETBUF-1

  MOVDI,OFFSETBUF

  MOVCX,COUNT

  _________________

 LOP:

MOVSB

  _______________________________

LOOPLOP

9.已知存储器中有一个首地址为BUF的COUNT个字节数据区。

下列程序段把数据区中的每一项加1(不考虑溢出),请将程序填写完整。

BUFDB45H,79H,0ABH,...,86H

COUNTEQU____________________

LEABX,BUF

MOVCX,COUNT

AGN:

____________________

INCBX

LOOPAGN

HLT

10.NUM和NUM+1单元分别存有一个8位带符号数,下面程序段将两数中大者放NUM单元,小者放NUM+1单元,请在划线处各填一条指令补充完整。

MOVAL,NUM

CMPAL,NUM+1

______________

_______________

MOVNUM,AL

DONE:

……

11.下面程序段是判断两个存储单元是否同为正数,如是,则AX置全0,否则AX置非0。

试在空白处各填上适当的一条条件转移指令(两空白处要利用不同的标志位选用不同的条件转移指令)。

VAR1DW××××

VAR2DW××××

MOVAX,VAR1

MOVBX,VAR2

XORAX,BX

______________

TESTBX,8000H

______________

MOVAX,0

NEXT:

……

12.下列程序段求数组FLD的平均值,结果在AL中。

请将程序填完整(不考虑溢出)

FLDDW10,-20,30,-60,-71,80,79,56

_______

MOVCX,8

XORAX,AX

R1:

_______

ADDSI,2

LOOPR1

MOVCL,8

IDIVCL

HLT

13.下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置全1。

试把空白处填上适当指令。

_____________________

ANDAH,08H

_____________________

MOVAH,0FFH

JMPNEXT

ZERO:

MOVAH,0

NEXT:

……

14.设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。

  TESTAX,8000H

  ________________________________

  MOVPLW,BX

  JMPDONE

  K1:

______________________________

  DONE:

15.下面程序段完成将以BUF为首址的100个字节数据的位置颠倒过来,请在空白处各填上一条指令。

____________

LEASI,BUF

MOVDI,SI

ADDDI,99

NEXT:

MOVAL,[SI]

________________

MOV[SI],AL

INCSI

DECDI

LOOPNEXT

16.下面程序段实现把DA1字单元内容取绝对值后送到DA2中,请各填一条指令。

DA1DW××××

DA2DW?

MOVAX,DA1

______________

JNSK

______________

K:

MOVDA2,AX

17.DA1数据区中有50个字节数据,下面程序段将每个数据的低四位变反,高四位不变,并依次存入DA2数据区中。

请将程序补充完整。

MOVCX,50

LEASI,DA1

LEADI,DA2

K1:

MOVAL,[SI]

____________

MOV[DI],AL

INCSI

INCDI

DECCX

_____________

18.某程序段欲用单个字符显示的2号DOS功能调用去显示一字符串“STRING”。

试在下面空白处填上适当的指令(每一空白处仅填一条指令)。

STR1DB‘STRING',‘$'

MOVBX,OFFSETSTR1

LOP:

MOVDL,[BX]

MOVAH,02H

INT21H

_______________

_______________

JNELOP

19.下面程序段是判断AL和BL中第4位是否相同,如相同,则AL置全0,否则AL置全1。

试把空白处填上适当的指令。

(每一空白处填一条指令)

________________

    ANDAL,10H

________________

MOVAL,0FFH

NEXT:

……

20.下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置全1。

试把空白处填上适当指令。

_____________________

ANDAH,08H

_____________________

MOVAH,0FFH

JMPNEXT

ZERO:

MOVAH,0

NEXT:

……

21.以BUF为首

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

当前位置:首页 > 职业教育 > 中职中专

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

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