实验复习题新Word格式.docx
《实验复习题新Word格式.docx》由会员分享,可在线阅读,更多相关《实验复习题新Word格式.docx(22页珍藏版)》请在冰点文库上搜索。
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:
24:
ABS1NEGAL,AL
25:
MOVEMOVRLT,AX
26:
HALT
27:
DSEGENDP
28:
ENDSSTART
2.下列程序中至少有10个语法性的错,请将这些错误找出来。
;
********EXAM?
.?
DATADB14H,26H,03H,8A,11H,FFH
MAX:
DB?
DATAENDS
CSEGSEGMENT
CSEG:
SMAXMOVAX,DATA
LEASI,DATA
MOVAL,[SI]
AGAN:
INCSI
MOVBL,[SI]
CMPBL,FFH
JELOAD
CMPAL,BX
JAAGAIN
MOVAL,BL
ADDAL,ARGY
JRAGAIN
LOD:
MOVMAX,AX
CSEGENDP
ENDSSMAX
3.已知下述程序是从两个无符号数中选出较大者送入MAX中,但程序有错,请改正。
DSEGSEGMENT
DAX:
DBA0H
DAYDB300
MAXDW0
DSEGEND
CSEGSEGMENT
ASSUMECS:
CSEG;
DS:
DSEG
BEGIN:
MOVDS,DSEG
MOVAL,DAX
CMPAL,DAY
JGLMAX
MOVAL,DAY
LMAXMOVMAX,AL
HLT
CSEGENDS
ENDSTART
4.下面是从一组数据中找最大数的程序,该程序有逻辑性的错误,请将错误找出并改正过来。
已知数据为不带符号的字数据,并存放在LIST开始的单元中,数据的个数存放在CNT字单元,找出的最大值存放在MAX单元。
LISTDW1,200,30,400,0,7,4000
CNTDB7
MAXDW?
DSEGENDS
CSEGSEGMNET
CSEG,DS:
FMAX:
MOVDX,DSEG
LEASI,LIST
MOVCX,CNT
CLD
LODSW
DECCX
CMPAX,[SI]
JLESMALL
SMALL:
LOOPAGAIN
MOVMAX,SI
HLT
CSEGENDS
ENDSTART
5.下列程序求一组带符号字节数据的平均值,数据的首地址为DATA,数据个数存放在CNT字单元,但程序有逻辑错误,请将错误改正过来,使之完成预定功能。
DSEGSEGMENT
DATADB100,-100,90,20,-120,60
CNTDW0005H
AVERDB?
MAINPROCFAR
PUSHDS
XORDX,DX
PUSHDX
MOVAX,DS
MOVSI,OFFSETDATA
MOVCX,OFFSETCNT
AGAIN:
ADDDL,[SI]
ADCDH,0
DIVCL
MOVAVER,AL
RET
MAINENDP
ENDMAIN
6.下述程序执行后,应将DATA数组中的最大值存入MAX单元,数组元素为带符号
字节数据,数据个数在CNT单元。
现已知程序有错,请改正,使之完成预定功能。
DATADB12H,203Q,56H,7E,63H,128
CNTDB06
MAXDW0
DSEG,CS:
FMAXMOVAX,[SI]
CMPAX,[SI+1]
JAFMAX1
MOVAL,[SI+1]
FMAX1:
LOOPFMAX
MAIN:
PROCFAR
PUSHCS
XORAX,AX
PUSHAX
MOVCX,CNT
CALLFMAX
MOVMAX,AX
ENDP
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.假设数据段定义如下:
STR1DB'
abcdef'
STR2DB'
abcdfe'
COUNT=6
FLAGDB0
现想用指令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:
_____________________
JAENEXT
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
XLAT
HLT
7.下面程序段完成将存储单元A1中一个压缩型BCD码拆成二个非压缩型BCD码,高位BCD码存放在A3单元,低位BCD码存放在A2单元,再分别转换为对应的ASCⅡ码。
请将程序补充完整。
MOVAL,A1
MOVCL,4
__________
ORAL,30H
MOVA3,AL
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
_______________________________
9.已知存储器中有一个首地址为BUF的COUNT个字节数据区。
下列程序段把数据区中的每一项加1(不考虑溢出),请将程序填写完整。
BUFDB45H,79H,0ABH,...,86H
COUNTEQU____________________
LEABX,BUF
MOVCX,COUNT
AGN:
____________________
LOOPAGN
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
12.下列程序段求数组FLD的平均值,结果在AL中。
请将程序填完整(不考虑溢出)
FLDDW10,-20,30,-60,-71,80,79,56
MOVCX,8
XORAX,AX
R1:
ADDSI,2
LOOPR1
MOVCL,8
IDIVCL
13.下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置全1。
试把空白处填上适当指令。
ANDAH,08H
MOVAH,0FFH
JMPNEXT
ZERO:
MOVAH,0
……
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
_____________
18.某程序段欲用单个字符显示的2号DOS功能调用去显示一字符串“STRING”。
试在下面空白处填上适当的指令(每一空白处仅填一条指令)。
STR1DB‘STRING'
,‘$'
MOVBX,OFFSETSTR1
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。
21.以BUF为首