微机原理及应用编程题试题集Word格式文档下载.docx
《微机原理及应用编程题试题集Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机原理及应用编程题试题集Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
AL,BL
DATAY+2,DX
存放余数
0002题型:
03分值:
试编写一个程序段,实现将BX中的数除以10,结果仍放在BX中。
MOVCL,0AH
MOVAX,BX
DIV
CL
MOVBX,AX
0016题型:
试编写一个程序段,实现将DATAX和DATAY中的两个双字数据相加,和存放在DATAY和
ADD
AX,DATAY
BX,DATAX+2
BX,DATAY+2
DATAY,AX
DATAY+2,BX
0020题型:
变量N1和N2均为2字节的非压缩BCD数码,请写出计算N1与N2之差的指令序列。
AX,0
AL,N1+1
SUBAL,N2+1
AAS
DL,AL
AL,N1
SBBAL,N2
DH,AL
0006题型:
04节号:
汇编语言及程序设计
编写程序实现对两个存储区中的字进行比较。
如找到一对不同的字,则退出,此时,ZF为0,DI指向此字;
如两个存储区中所有的字都相同,则退出程序时,CX中值为0,ZF为1。
MATT:
SI,OFFSETSOURCE
源区首址
DI,OFFSETTARGET
目的区首址
CX,NUMBER
JCXZ
EXIT
如CX为0,则结束
PUSH
CX
保存有关寄存器
SI
DI
CLD
清方向标志
REPE
CMPSW
JZ
MATCH
比较
PUSHF
ZF为1,则转移
SUB
DI,2
ZF为0,则DI指向次字
POPF
JMP
推出
MATCH:
POP
恢复寄存器
SI
CX
EXIT:
RET
0015题型:
根据下列要求编写一个汇编语言程序:
:
(1)代码段的段名为COD_SG
(2)数据段的段名为DAT_SG
(3)堆栈段的段名为STK_SG
(4)变量HIGH_DAT所包含的数据为95
(5)将变量HIGH_DAT装入寄存器AH,BH和DL
(6)程序运行的入口地址为START
DAT_SG
SEGEMNT
HIGH_DAT
DB
95
ENDS
STK_SG
SEGMENT
DW
64DUP(?
)
COD_SG
MAIN
PROC
FAR
ASSUMECS:
COD_SG,DS:
DAT_SG,SS:
STK_SG
START:
AX,DAT-SG
DS,AX
AH,HIGH_DAT
BH,AH
DL,AH
AH,4CH
INT
21H
ENDP
COD_SGENDS
END
START
0026题型:
已知整数变量A和B,试编写完成下述操作的程序:
(1)若两个数中有一个是奇数,则将该奇数存入A中,偶数存入B中;
(2)若两个数均为奇数,则两数分别加1,并存回原变量;
(3)若两个数均为偶数,则两变量不变。
dsegsegment
a
dw
?
b
dsegends
cseg
segment
main
proc
far
assume
cs:
cseg,ds:
dseg
start:
push
ds
sub
ax,ax
ax
mov
ax,dseg
ds,ax
begin:
ax,a
bx,b
xor
ax,bx
test
ax,0001
jz
class
bx,0001
exit
xchg
bx,a
b,bx
jmp
class:
inc
b
a
exit:
ret
endp
ends
end
start
0001题型:
在DS段中有一个从TABLE开始的由160个字符组成的链表,设计一个程序,实现对此表进行搜索,找到第一个非0元素后,将此单元和下一单元清0。
CX,SEGTABLE
DS,CX
将段地址送DS
SI,OFFSETTABLE;
表偏移量送SI
CX,160
字节数
XOR
AL,AL
NEXT:
CMP
AL,[SI]
JNE
EXIT1
INC
LOOP
NEXT
EXIT1:
[SI],AL
0004题型:
用循环控制指令设计程序段,从60H个元素中寻找一个最大值,结果放在AL中。
SI,OFFSETDATA1;
将数据起始地址送SI
CX,5FH
有60H-1次循环
AL,[SI]
将第一个元素放AL中
COMPARE:
JL
XCHMAX
NEXT
XCHMAX:
NEXT:
LOOPCOMPARE
0007题型:
编写程序实现在TABLE为起始地址的100个字符长度的表中检索“$"
字符。
CX,SEGTABLE
表段地址送ES
ES,CX
DI,OFFSETTABLE
表偏移量送DI
AL,'
$'
检索的关键字
CX,64H
检索的字节数
保存起始地址
清除方向标志
REPNE
SCASB
检索
JNZ
NFOUN
如未找到,则转移
DI,1
找到,则指向字符
EXIT
NFOUN:
恢复起始地址
RET
0009题型:
编写程序实现两个16位非组合BCD码的数相加。
ANBCD:
CH,AH;
进入程序段时,AX中为第二个操作数
ADD
AL,BL;
BX中为被加数,实现低8位相乘
AAA
XCHGAL,CH
ADC
AL,BH;
实现高8位相加
AH,AL;
和保存在AX中
AL,CH
0010题型:
编写程序段设计一个实现16位非组合BCD码减法的程序。
SUBCD:
CH,AH
AX-BX->
AX,为非组合BCD码
AL,BL
AAS
XCHGAL,CH
SBB
AL,BH
AH,AL
AL,CH
0011题型:
编写程序实现两个16位组合BCD码相减,进入程序时,BX中为减数,AX中为被减数,程序执行后,结果在AX中。
STASUB:
保存高8位
低8位相减
DAS
十进制调整
高8位相减
结果在AX中
0012题型:
编写程序实现两个16位组合BCD码相加。
进入程序时,BX中为加数,AX中为被加数,程序执行后,结果在AX中。
STAADD:
AX+BX->
AX,为组合BCD码
DAA
RET
0013题型:
编写程序将一个8位二进转换为2位BCD数字,进入程序时,AL中为二进制数,退出程序时,如CF为0,则AL中为BCD数字,如CF为1,则表示由于输入值超出范围故结果无效。
AL,99;
是否超出范围?
JBE
STRAT
STC
是,则转EXIT,并给CF置1
JC
STRAT:
CL,10;
10作为除数
AH,AH
CBW
将AL中数扩展到AH
CL
除法结果AL中为高位,AH中为低位
CL,4
SHL
AL,CL;
左移4位
OR
AL,AH;
合成BCD码在AL中
0014题型:
编写程序用XLAT指令将小于16的二进制数转换成ASCII表示的16进制数。
BINASC
ASCII
'
0123456789ABCDEF'
BINASC:
PUSHBX
AND
AL,0FH
清除AL中高4位
LEA
BX,ASCII;
BX指向ASCII表
XLAT
转换为ASCII码
BX
0030题型:
编写完整的8086汇编程序:
将字符缓冲区A的字符'
1234567890'
倒序存放到缓冲区B中。
DSEG
A
ESEG
SEGMENT
B
10
DUP(?
CSEG
ASSUME
CS:
CSEG,DS:
DSEG,ES:
ESEG
AX,DSEG
DS,AX
AX,ESEG
ES,AX
SI,A
DI,B
DI,9
CX,10
MOVE:
CLD
LODSB
STD
STOSB
MOVE
AH,4CH
INT
END
START
0031题型:
查表求X(0-9)的立方并将结果存放到变量XXX中去。
DATA
TAB
DW
0,1,8,27,64,125,216,343,512,729
X
8
XXX
ENDS
CODE
CODE,DS:
AX,DATA
DS,AX
为DS送初值
AL,X
AL,AL
BL,AL
求立方表的偏移
BH,0
AX,TAB[BX]
查表
XXX,AX
保存
返回DOS
ENDSTART
0033题型:
编写程序,计算下面函数的值。
X
34
S
ASSUME
CODE,DS:
DATA
AX,DATA
DS,AX
AX,X
;
将X送到AX中
AX,0
(AX)>0吗?
DOUB
是,转向doub
AX,10
否,(ax)<10吗?
JLE
TRIB
是,转向trib
SAL
AX,1
否,乘以4
AX,1
JMP
DOUB:
乘以2
TRIB:
乘以3
AX,X
MO