1
一、下面每个问题均有四个供选择的答案,请划一个圈将在你认为最正确的选项前的
字母圈起来(每小题2分,本题共20分)
1.当(CX)=0时,转ZERO执行的正确指令是:
,,0
JZZEROJZZERO
,,0
JZZEROJZZERO
2.下面指令中影响PSW的CF位的指令是:
3.完成将BX清零,并使CF清零,下面错误的指令是:
,,BX
,,00H
4.不能实现当AL的值为偶数时转向LEL的指令组是:
,,01H
JZLELJZLEL
,,1
JNCLELJZLEL
5.设有伪指令:
VARDW1,2,$+2,5,6
若汇编时VAR分配的偏移地址是0010H,则汇编后0014H单元的内容是:
A.12HB.16H
C.00HD.02H
6.算术右移SAR和逻辑右移SHR两条指令执行后结果完全相同的情况是:
A.目标操作数最高位为0B.目标操作数最高位为1
C.无论什么情况都不可能相同D.目标操作数为任意情况
7.假设PSW的DF=0,对于程序段
AGAIN:MOVES:[DI],AL
INCDI
LOOPAGAIN
可以使用的相同功能命令是:
SB
ASB
8.寄存器间接寻址方式中,操作数存在于:
2
A.通用寄存器B.磁盘扇区
C.主存储单元D.输入/输出端口
9.假设VAR为符号地址,指令MOVBX,OFFSETVAR的寻址方式是:
A.直接寻址B.间接寻址
C.立即寻址D.存储器寻址
10.已知JNCrel指令的机器码是73HXXH,CF=0,(IP)=1000H,问执行该指令后,
(IP)=
A.0FFFFHB.10FEH
C.0FFEHD.10FCH
二、简答题(20分,每小题5分)
8086/8088CPU为程序员提供了8个16位的通用寄存器,它们的名称分别
是,其中的4个数据寄
存器可以把高半部分和低半部分分开来使用,用于存放8位
的操作数或进行8位的运算,此时它们的名字为:
。
2.现有寄存器(DS)=1000H,(SS)=1000H,(BX)=0100H,(SI)=0002H,(SP)=100H;内
存单元中的(10100H)=12H,(10101H)=34H,(10102H)=56H,(10103H)=78H,(11200H)=0A1H,
(11201H)=0B2H,(11202H)=0C3H,(11203H)=0D4H。试说明下列各指令执行完后AX寄存器
的内容。
指令AX的内容
①MOVAX,1200H①
②MOVAX,BX②
③MOVAX,[1200H]③
④MOVAX,[BX]④
⑤MOVAX,1100H[BX]⑤
⑥MOVAX,[BX][SI]⑥
⑦MOVAX,1100H[BX][SI]⑦
⑧POPAX⑧
3.写一个程序段,不用乘法指令,实现有符号数计算:BX的内容×30,并把结果保存
在寄存器BX中(不考虑溢出)
4.对于这样的程序段:
CMPAX,BX
3
JAENEXT
XCHGAX,BX
NEXT:CMPAX,CX
JAEDONE
XCHGAX,CX
DONE:┆
试回答:
①上述程序执行后,原有AX,BX,CX中最大数存放在那个寄存器?
②这三个数是带符号数还是无符号数?
三、程序填空题(10分)
下面程序从键盘输入一个0至65535间的10进制无符号数(以回车作为输入结束),然
后以16进制形式将所输入数显示出来。在括号内填写合适内容,使程序完成所要求的功能,
不能增加语句行(不考虑溢出问题)。
datagment
s1db"输入一个0~65535之间的10进制数,以回车结束$"
s2db0DH,0AH,"所输入数的16进制形式为:$"
dataends
stagmentstack
dw100hdup(?)
toplabelword
staends
codegment
assumecs:code,ds:data,es:data,ss:sta
progprocfar
movax,sta
movss,ax
movsp,offttop
()
xorax,ax
pushax
movax,data
movds,ax
movdx,offts1
movah,9
int21h
xorbx,bx
b1:movah,1
int21h
cmp(),0dh
jzb2
cmpal,30h
4
jbb1
cmpal,39h
jab1
andal,0fh
xorah,ah
xchgax,bx
movsi,10
()
addbx,ax
jmpb1
b2:movdx,offts2
movah,9
int21h
movcx,4
b3:pushcx
mov(),4
rolbx,cl
movdl,bl
anddl,0fh
adddl,30h
cmpdl,39h
jbeb4
()
b4:movah,2
int21h
popcx
loopb3
retf
progendp
codeends
endprog
四、程序设计题(50分,任选三题,全部题都完成时要指明哪三题为主做题,会根据
非主做题的完成情况适当加分,每题16分,另2分为程序整洁分)
1.在首地址为DATA的字数组中,存放了100H个16位补码数,编一个程序求出它们平均
值放在地址AVER中,并求出数组中有多少个数大于此平均值,将结果存放在COUNT中。
2.已知数据块BUFA中存放15个互不相同的字符,BUFB中存放20个互不相同的字符,编
一个程序,将既在BUFA中出现,又在BUFB中出现的字符存放到BUFC开始的缓冲区中。
指向一个字线性表,其中的首单元保存线性表的长度,编一个程序,将该线性
表中内容为0的项删除。
4.写一个程序,在屏幕或打印机上列出所有小于65535的素数(primenumber)
5
5.写一个程序实现:把内存单元F000:0000H开始的1024的字作为有符号数,分别统计
其中正数、零、负数的个数,并把结果打印出来。
附录1:部分字符ASCII(16进制数)
字符回车换行空格$012…9
ASCII0D0A2024303132…39
字符ABC…YZabc…yz
ASCII414243…595A616263…797A
附录2:部分DOS功能调用参数
功能号功能描述调用参数返回参数
1键盘输入并回显无AL=输入字符ASCII
2显示输出DL=输出字符ASCII无
5打印机输出DL=输出字符ASCII无
9显示字符串DS:DX=串首址,以$结无
束字符串
A键盘输入到缓冲区DS:DX=缓冲区首地址(DS:DX+1)=实际输入
(DS:DX)=缓冲区容量的字符个数
(DS:DX+2)开始=输入
的字符串
本文发布于:2023-01-04 16:21:17,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/91629.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |