实验复习题新.docx
《实验复习题新.docx》由会员分享,可在线阅读,更多相关《实验复习题新.docx(22页珍藏版)》请在冰豆网上搜索。
![实验复习题新.docx](https://file1.bdocx.com/fileroot1/2023-4/17/6bb496c8-37d4-4ea6-9608-b7f6625d8133/6bb496c8-37d4-4ea6-9608-b7f6625d81331.gif)
实验复习题新
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为首