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