10微机原理练习题Word文档格式.docx
《10微机原理练习题Word文档格式.docx》由会员分享,可在线阅读,更多相关《10微机原理练习题Word文档格式.docx(49页珍藏版)》请在冰豆网上搜索。
5BH;
-76H;
4CH(用2位16进制数表示)
(2)-69DAH;
-3E2DH;
1AB6H;
-7231H
14.作下列各式无符号数的运算
(1)10100010-01110101
(2)11011011+00001101
(3)11011011×
10101101(4)11111011÷
1010
15.作下列各式的逻辑运算
(1)10100101∧0000111110011101∧10100101
(2)10100101∨0000111110011101∨10100101
(3)10100101⊕0000111110011101⊕10100101
16.已知x1和x2的值,求[x1]补+[x2]补,并指出结果的符号,判断是否产生溢出和进位?
(1)x1=+0110011Bx2=+1011010B
(2)x1=-0101001Bx2=-1011101B
(3)x1=+1100101Bx2=-1011101B
第2章汇编语言与汇编程序
1.根据下列要求编写一个汇编语言程序:
:
(1)代码段的段名为COD_SG
(2)数据段的段名为DAT_SG
(3)堆栈段的段名为STK_SG
(4)变量HIGH_DAT所包含的数据为95
(5)将变量HIGH_DAT装入寄存器AH,BH和DL
(6)程序运行的入口地址为START
答案:
DAT_SGSEGEMNT
HIGH_DATDB95
DAT_SGENDS
;
STK_SGSEGMENT
DW64DUP(?
)
STK_SGENDS
COD_SGSEGMENT
MAINPROCFAR
ASSUMECS:
COD_SG,DS:
DAT_SG,SS:
STK_SG
START:
MOVAX,DAT_SG
MOVDS,AX
MOVAH,HIGH_DAT
MOVBH,AH
MOVDL,AH
MOVAH,4CH
INT21H
MAINENDP
COD_SGENDS
ENDSTART
2.指出下列程序中的错误:
STAKSGSEGMENT
DB100DUP(?
STA_SGENDS
DTSEGSEGMENT
DATA1DB?
DTSEGEND
CDSEGSEGMENT
MAINPROCFAR
START:
MOVDS,DATSEG
MOVAL,34H
ADDAL,4FH
MOVDATA,AL
STARTENDP
CDSEGENDS
END
改正后:
STAKSGSEGMENT
DB100DUP(?
STAKSGENDS
DTSEGSEGMENT
DATA1DB?
DTSEGENDS
CDSEGSEGMENT
ASSUMECS:
CDSEG,DS:
DTSEG,SS:
STAKSG
MOVAX,DTSEG
MOVDS,AX
MOVAL,34H
ADDAL,4FH
MOVDATA1,AL
CDSEGENDS
ENDS
3.将下列文件类型填入空格:
(1).obj
(2).exe(3).crf(4).asm(5).lst(6).map
编辑程序输出的文件有______________________________________;
汇编程序输出的文件有______________________________________;
连接程序输出的文件有______________________________________。
编辑程序输出文件:
(4)
汇编程序输出文件:
(1),(3),(5)
连接程序输出文件:
(2),(6)
4.下列标号为什么是非法的?
(1)GET.DATA
(2)1_NUM(3)TEST-DATA(4)RET(5)NEWITEM
非法标号:
(1)因为‘.’只允许是标号的第一个字符
(2)第一个字符不能为数字
(3)不允许出现‘-’
(4)不能是保留字,如助记符
(5)不能有空格
5.下面的数据项定义了多少个字节?
DATA_1DB6DUP(4DUP(0FFH))
24字节
6.对于下面两个数据段,偏移地址为10H和11H的两个字节中的数据是一样的吗?
DTSEGSEGMENT|DTSEGSEGMENT
ORG10H|ORG10H
DATA1DB72H|DATA1DW7204H
DB04H|DTSEGENDS
DTSEGENDS|
不一样.分别是72H,04H和04H,72H.存储字时低8位存在低字节,高8位存在高字节.
7.下面的数据项设置了多少个字节?
(1)ASC_DATADB‘1234’
(2)HEX_DATADB1234H
(1)设置了4个字节
(2)设置了2个字节
8.执行下列指令后,AX寄存器中的内容是什么?
TABLEDW10,20,30,40,50
ENTRYDW3
.
MOVBX,OFFSETTABLE
ADDBX,ENTRY
MOVAX,[BX]
(AX)=40
9.指出下列指令的错误:
(1)MOVAH,BX
(2)MOV[SI],[BX](3)MOVAX,[SI][DI]
(4)MOVAX,[BX][BP](5)MOV[BX],ES:
AX(6)MOVBYTEPTR[BX],1000
(7)MOVAX,OFFSET[SI](8)MOVCS,AX(9)MOVDS,BP
(1)源、目的字长不一致
(2)源、目的不能同时为存贮器寻址方式
(3)基址变址方式不能有SI和DI的组合
(4)基址变址方式不能有BX和BP的组合
(5)在8086寻址方式中,AX不能作为基址寄存器使用,而且源、目的不能同时为存贮器寻址方式
(6)1000超出一个字节的表数范围
(7)OFFSET只用于简单变量,应去掉
(8)CS不能作为目的寄存器
(9)段地址不能直接送入数据段寄存器
10.变量DATAX和DATAY定义如下:
DATAXDW0148H
DW2316H
DATAYDW0237H
DW4052H
按下述要求写出指令序列:
(1)DATAX和DATAY中的两个字数据相加,和存放在DATAY和DATAY+2中。
(2)DATAX和DATAY中的两个双字数据相加,和存放在DATAY开始的字单元中。
(3)DATAX和DATAY两个字数据相乘(用MUL)。
(4)DATAX和DATAY两个双字数据相乘(用MUL)。
(5)DATAX除以23(用DIV)。
(6)DATAX双字除以字DATAY(用DIV)。
(1)MOVAX,DATAX
ADDAX,DATAY
MOVBX,DATAX+2
ADDBX,DATAY+2
MOVDATAY,AX
MOVDATAY+2,BX
(2)MOVAX,DATAX
ADDDATAY,AX
MOVAX,DATAX+2
ADCDATAY+2,AX
(3)MOVAX,DATAX
MULDATAY
MOVDATAY,AX
MOVDATAY+2,DX
(4)
MOVAX,WORDPTRDATAX
MOVBX,WORDPTRDATAY
MULBX
MOVRESULT,AX
MOVRESULT+2,DX
MOVAX,WORDPTRDATAY+2
MULBX
ADDRESULT+2,AX
ADCRESULT+4,DX
MOVAX,WORDPTRDATAX+2
MOVBX,WORDPTRDATAY
ADDRESULT+2,AX
ADCRESULT+4,DX
MOVAX,WORDPTRDATAX+2
MOVBX,WORDPTRDATAY+2
MULBX
ADDRESULT+4,AX
ADCRESULT+6,DX
(5)MOVAX,DATAX
MOVBL,23
DIVBL
MOVBL,AH
MOVAH,0
MOVDATAY,AX;
存放商
MOVAL,BL
MOVDATAY+2,AX;
存放余数
(6)MOVAX,DATAX
MOVDX,DATAX+2
DIVDATAY
MOVDATAY,AX
MOVDATAY+2,DX
11.试分析下面的程序段完成什么操作?
MOVCL,04
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
将DX:
AX中的双字左移4位(乘16)
12.编写程序段,比较两个5字节的字符串OLDS和NEWS,如果OLDS字符串与NEWS不同,则执行NEW_LESS,否则顺序执行程序。
LEASI,OLDS
LEADI,NEWS
MOVCX,5
CLD
REPZCMPSB
JNZNEW_LESS
13.假定AX和BX中的内容为带符号数,CX和DX中的内容为无符号数,请用比较指令和条件转移指令实现以下判断:
(1)若DX的值超过CX的值,则转去执行EXCEED
(2)若BX的值大于AX的值,则转去执行EXCEED
(3)CX中的值为0吗?
若是则转去执行ZERO
(4)BX的值与AX的值相减,会产生溢出吗?
若溢出则转OVERFLOW
(5)若BX的值小于AX的值,则转去执行EQ_SMA
(6)若DX的值低于CX的值,则转去执行EQ_SMA
(1)CMPDX,CX
JAEXCEED
(2)CMPBX,AX
JGEXCEED
(3)CMPCX,0
JEZERO
(4)SUBBX,AX
JOOVERFLOW
(5)CMPBX,AX
JLEQ_SMA
(6)CMPDX,CX
JBEQ_SMA
14.设(BX)=0158H,(DI)=10A5H,相对位移量disp=1B57H,(DS)=2100H,没有使用段前缀,计算下列寻址方式下的有效地址EA和物理地址PA(注意:
寄存器和基址用BX,变址用DI)
(1)直接寻址
(2)寄存器间接寻址(3)寄存器相对间接寻址
(4)变址寻址(5)寄存器相对变址寻址(6)基址加变址寻址
(7)基址加变址相对寻址
15.判断下列指令是否正确?
(1)MOVAL,BX
(2)MOVAL,CL(3)INC〔BX〕(4)MOV5,AL(5)MOV〔BX〕,〔SI〕(6)MOVBL,F5
(7)MOVDS,2000H(8)POPCS(9)PHSHCS(10)OUT258H,AL(11)MOV〔50-BP〕,AX(12)MUL35
(13)ADDBYTEPTR〔BX〕,〔DI〕(14)SALAX,4
16.已知一数据段中的数据为
DATAsegment
STR1DB0,1,2
STR2DB“012”
COUNTEQU30
NUMBDB3DUP
(2)
NUMWDW10H,-60H
POINDW0
Dataends
试画出数据段中的数据在存储器中存储的形式。
17.上题中,各变量的偏移地址与变量值各是多少?
第3章程序设计的基本技术
1.试编写一段汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
abc:
movah,1
int21h
cmpal,’a’
jbstop
cmpal,’z’
jastop
subal,20h
movdl,al
movah,2
jmpabc
stop:
2.已知整数变量A和B,试编写完成下述操作的程序:
(1)若两个数中有一个是奇数,则将该奇数存入A中,偶数存入B中;
(2)若两个数均为奇数,则两数分别加1,并存回原变量;
(3)若两个数均为偶数,则两变量不变。
dsegsegment
adw?
bdw?
dsegends
csegsegment
mainprocfar
assumecs:
cseg,ds:
dseg
start:
pushds
subax,ax
pushax
movax,dseg
movds,ax
begin:
movax,a
movbx,b
xorax,bx
testax,0001
jzclass
testbx,0001
jzexit
xchgbx,a
movb,bx
jmpexit
class:
testbx,0001
incb
inca
exit:
ret
mainendp
csegends
endstart
3.把0~10010之间的30个数,存入首地址为GRAD的字数组中,GRAD+i表示学号为i+1的学生成绩。
另一个数组RANK是30个学生的名次表,其中RANK+I的内容是学号为i+1的学生的名次。
试编写程序,根据GRAD中的学生成绩,将排列的名次填入RANK数组中(提示:
一个学生的名次等于成绩高于这个学生的人数加1)。
gradedw30dup(?
rankdw30dup(?
mainprocfar
cseg,ds:
dseg,es:
moves,ax
movdi,0
movcx,30
loop1:
pushcx
movsi,0
movax,grade[di]
movdx,0
loop2:
cmpgrade[si],ax
jbego_on
incdx
go_on:
addsi,2
looploop2
popcx
movrank[di],dx
sdddi,2
looploop1
ret
4.写出分配给下列中断类型号在中断向量表中的物理地址。
(1)INT12H
(2)INT8
(1)00048h
(2)00020h
5.试编写程序,它轮流测试两个设备的状态寄存器,只要一个状态寄存器的第0位为1,则与其相应的设备就输入一个字符;
如果其中任一状态寄存器的第3位为1,则整个输入过程结束。
两个状态寄存器的端口地址分别是0024H和0036H,与其相应的数据输入寄存器的端口则为0026H和0038H,输入字符分别存入首地址为BUFF1和BUFF2的存储区中。
movsi,0
movdi,0
test12:
inal,0024h
testal,08
jnzexit
inal,0036h
dev1:
testal,01
jzdev2
inal,0026h
movbuff1[si],al
incsi
dev2:
inal,0036h
testal,01
jztest12
inal,0038h
movbuff2[di],al
incdi
jmptest12
6.给定(SP)=0100,(SS)=0300,(FLAGS)=0240,存储单元的内容为(00020)=0040,(00022)=0100,在段地址为0900及偏移地址为00A0的单元中有一条中断指令INT8,试问执行INT8指令后,SP,SS,IP,FLAGS的内容是什么?
栈顶的三个字是什么?
答案:
(SP)=00FA
(SS)=0300
(IP)=0040
(FLAGS)=0040
堆栈内容:
00A1H
0900H
0240H
7.编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。
加密表为;
输入数字:
0,1,2,3,4,5,6,7,8,9
密码数字:
7,5,9,1,3,6,8,0,2,4
scodedb7,5,9,1,3,6,8,0,2,4
bufferdb10dup(?
……
movcx,10
leabx,scode
input:
movah,01
cmpal,0ah
andal,0fh
xlat
movbuffer[si],al
incsi
loopinput
8.编写一个汇编语言程序,将字符串‘AssemblyLanguageProgramming’全部转换为大写字母,存放到原来所在单元。
9.编写一个将16位二进制数转换成BCD码数的程序。
10.编写一个将5位BCD码数(小于65536)转换成二进制数的程序。
11编写一个将16位二进制数转化为四位十六进制数的程序,并将十六进制数的各位显示出来。
第四章总线
1.采用一种总线标准进行微型计算机的硬件结构设计具有什么优点?
为适应用户不断变化的要求,微机系统设计必须采用模块化设计,不同的模块组合形成一定的功能。
模块之间的连接关系采用标准的总线结构可使不同功能的模块便于互连,兼容性好、生命周期长。
模块采用标准化总线结构设计可使模块的生产供应规模化、多元化、价格低、有利于用户。
2.一个总线的技术规范应包括哪些部分?
总线技术规范应包括:
(1)机械结构规范:
模块尺寸、总线插头插座形式与结点数以及模块与插头插座的机械定位。
(2)功能规范:
总线信号名称、功能以及相互作用的协议。
(3)电气规范:
总线中每个信号工作时的有效电平、动态转换时间、负载能力以及电气性能的额定值与最大值。
3.总线的定义是什么?
总线就是两个以上模块(或子系统)间传送信息的公共通道,通过它模块间可进行数据、地址码及命令的传输。
4.微型计算机系统总线由哪三部分组成?
它们各自的功能是什么