第一章微型计算机的基础知识习题1.
计算机分那几类各有什么特点2.
简述微处理器、微计算机及微计算机系统三个术语的内涵.
3.
80X86微处理器有几代各代的名称是什么4.
将十进制数(1)+107/128(2)―35/64化成二进制数,再写出各自的原码、反码、补码表示(符号位和数值位共8位).
5.
将十进制数(1)―52,(2)―127化成二进制数,再写出各自的原码、反码、补码表示(符号位和数值位共8位).
6.
下列数中最小的数为().
A、101001BB、52QC、101001(BCD)D、233H7.
下列数中最大的数为().
A、10010101BB、227QC、96HD、1438.
某数在计算机中用8421BCD码表示为011110001001,其真值为().
A、789B、789HC、1929D、11110001001B9.
计算机内部采用____数字进行运算A.
八进制B.
十进制C.
二进制D.
十六进制10.
英文小写字母"c"的ASCII码为1100011,英文字母"f"的ASCII码为十进制____A.
100B.
101C.
102D.
10311.
按对应的ASCII码值来比较,不正确的是____A.
"b"比"a"大B.
"f"比"F"大C.
"9"比"0"大D.
"F"比"f"大参考答案1.
答:传统上分为三类:大型主机、小型机、微型机.
大型主机一般为高性能的并行处理系统,存储容量大,事物处理能力强,可为众多用户提供服务.
小型机具有一定的数据处理能力,提供一定用户规模的信息服务,作为部门的信息服务中心.
微型机一般指在办公室或家庭的桌面或可移动的计算系统,体积小、价格低、具有工业化标准体系结构,兼容性好.
2.
答:微处理器是微计算机系统的核心硬件部件,对系统的性能起决定性的影响.
微计算机包括微处理器、存储器、I/O接口电路及系统总线.
微计算机系统是在微计算机的基础上配上相应的外部设备和各种软件,形成一个完整的、独立的信息处理系统.
3.
答:从体系结构上可分为3代:8080/8085:8位机;8086/8088/80286:16位机;80386/80486:32位机.
4.
答案:(1)原、反、补码都是:01101011,(2)原码:11000110,反码:10111010,补码:101110015.
答案:(1)原码:10110100,反码:11001011,补码:11001100(2)原码:11111111,反码:10000000,补码:100000016.
C7.
B8.
A9.
C10.
C11.
D第二章8086微处理器习题1、8086是多少位的微处理器为什么2、EU与BIU各自的功能是什么如何协同工作3、8086/8088与其前一代微处理器8085相比,内部操作有什么改进4、8086/8088微处理器内部有那些寄存器,它们的主要作用是什么5、8086对存储器的管理为什么采用分段的办法6、在8086中,逻辑地址、偏移地址、物理地址分别指的是什么具体说明.
7、给定一个存放数据的内存单元的偏移地址是20C0H,(DS)=0C00EH,求出该内存单元的物理地址.
8、8086/8088为什么采用地址/数据引线复用技术9、8086与8088的主要区别是什么10、怎样确定8086的最大或最小工作模式最大最小模式产生控制信号的方法有何不同11、8086被复位以后,有关寄存器的状态是什么微处理器从何处开始执行程序12、8086基本总线周期是如何组成的各状态中完成什么基本操作13、结合8086最小模式下总线操作时序图,说明ALE、M/IO#、DT/R#、RD#、READY信号的功能.
14、什么是总线请求8086在最小工作模式下,有关总线请求的信号引脚是什么15、简述在最小工作模式下,8086如何响应一个总线请求16、在基于8086的微计算机系统中,存储器是如何组织的是如何与处理器总线连接的BHE#信号起什么作用17、"80386是一个32位微处理器",这句话的涵义主要指的是什么参考答案1、答:8086是16位的微处理器,其内部数据通路为16位,对外的数据总线也是16位.
2、答:EU是执行部件,主要的功能是执行指令.
BIU是总线接口部件,与片外存储器及I/O接口电路传输数据.
EU经过BIU进行片外操作数的访问,BIU为EU提供将要执行的指令.
EU与BIU可分别独立工作,当EU不需BIU提供服务时,BIU可进行填充指令队列的操作.
3〡答:8085为8位机,在执行指令过程中,取指令与执行执令都是串行的.
8086/8088由于内部有EU和BIU两个功能部件,可重叠操作,揔高了处理器的性能.
4、答:执行部件有8个16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI.
AX、BX、CX、DX一般作为通用数据寄存器.
SP为堆栈指针存器,BP、DI、SI在间接寻址时作为地址寄存器或变址寄存器.
总线接口部件设有段寄存器CS、DS、SS、ES和指令指针寄存器IP.
段寄存器存放段地址,与偏移地址共同形成存储器的物理地址.
IP的内容为下一条将要执行指令的偏移地址,与CS共同形成下一条指令的物理地址.
5、答:8086是一个16位的结构,采用分段管理办法可形成超过16位的存储器物理地址,扩大对存储器的寻址范围(1MB,20位地址).
若不用分段方法,16位地址只能寻址64KB空间.
6、答:逻辑地址是在程序中对存储器地址的一种表示方法,由段地址和段内偏移地址两部分组成,如1234H:0088H.
偏移地址是指段内某个存储单元相对该段首地址的差值,是一个16位的二进制代码.
物理地址是8086芯片引线送出的20位地址码,用来指出一个特定的存储单元.
7、答:物理地址:320F8H.
8、答:考虑到芯片成本,8086/8088采用40条引线的封装结构.
40条引线引出8086/8088的所有信号是不够用的,采用地址/数据线复用引线方法可以解决这一矛盾,从逻辑角度,地址与数据信号不会同时出现,二者可以分时复用同一组引线.
9、答:8086有16条数据信号引线,8088只有8条;8086片内指令预取缓冲器深度为6字节,8088只有4字节.
10、答:引线MN/MX#的逻辑状态决定8086的工作模式,MN/MX#引线接高电平,8086被设定为最小模式,MN/MX#引线接低电平,8086被设定为最大模式.
最小模式下的控制信号由相关引线直接提供;最大模式下控制信号由8288专用芯片译码后提供,8288的输入为8086的S2#~S0#三条状态信号引线提供.
11、答:标志寄存器、IP、DS、SS、ES和指令队列置0,CS置全1.
处理器从FFFFOH存储单元取指令并开始执行.
12、答:基本总线周期由4个时钟(CLK)周期组成,按时间顺序定义为T1、T2、T3、T4.
在T1期间8086发出访问目的地的地址信号和地址锁存选通信号ALE;T2期间发出读写命令信号RD#、WR#及其它相关信号;T3期间完成数据的访问;T4结束该总线周期.
13、答:ALE为外部地址锁存器的选通脉冲,在T1期间输出;M/IO#确定总线操作的对象是存储器还是I/O接口电路,在T1输出;DT/R#为数据总线缓冲器的方向控制信号,在T1输出;RD#为读命令信号;在T2输出;READY信号为存储器或I/O接口"准备好"信号,在T3期间给出,否则8086要在T3与T4间插入Tw等待状态.
14、答:系统中若存在多个可控制总线的主模块时,其中之一若要使用总线进行数据传输时,需向系统请求总线的控制权,这就是一个总线请求的过程.
8086在最小工作模式下有关总线请求的信号引脚是HOLD与HLDA.
15、答:外部总线主控模块经HOLD引线向8086发出总线请求信号;8086在每个时钟周期的上升沿采样HOLD引线;若发现HOLD=1则在当前总线周期结束时(T4结束)发出总线请求的响应信号HLDA;8086使地址、数据及控制总线进入高阻状态,让出总线控制权,完成响应过程.
16、答:8086为16位处理器,可访问1M字节的存储器空间;1M字节的存储器分为两个512K字节的存储体,命名为偶字节体和奇字节体;偶体的数据线连接D7~D0,"体选"信号接地址线A0;奇体的数据线连接D15~D8,"体选"信号接BHE#信号;BHE#信号有效时允许访问奇体中的高字节存储单元,实现8086的低字节访问、高字节访问及字访问.
17、答:指80386的数据总线为32位,片内寄存器和主要功能部件均为32位,片内数据通路为32位.
第三章指令系统习题1.
根据下列要求编写一个汇编语言程序:(1)代码段的段名为COD_SG(2)数据段的段名为DAT_SG(3)堆栈段的段名为STK_SG(4)变量HIGH_DAT所包含的数据为95(5)将变量HIGH_DAT装入寄存器AH,BH和DL(6)程序运行的入口地址为START2.
指出下列程序中的错误:STAKSGSEGMENTDB100DUP()STA_SGENDSDTSEGSEGMENTDATA1DBDTSEGENDCDSEGSEGMENTMAINPROCFARSTART:MOVDS,DATSEGMOVAL,34HADDAL,4FHMOVDATA,ALSTARTENDPCDSEGENDSEND3.
将下列文件类型填入空格:(1).
obj(2).
exe(3).
crf(4).
asm(5).
lst(6).
map编辑程序输出的文件有_汇编程序输出的文件有_连接程序输出的文件有_4.
下列标号为什么是非法的(1)GET.
DATA(2)1_NUM(3)TEST-DATA(4)RET(5)NEWITEM5.
下面的数据项定义了多少个字节DATA_1DB6DUP(4DUP(0FFH))6.
对于下面两个数据段,偏移地址为10H和11H的两个字节中的数据是一样的吗为什么DTSEGSEGMENT|DTSEGSEGMENTORG10H|ORG10HDATA1DB72H|DATA1DW7204HDB04H|DTSEGENDSDTSEGENDS|7.
下面的数据项设置了多少个字节(1)ASC_DATADB'1234'(2)HEX_DATADB1234H8.
执行下列指令后,AX寄存器中的内容是什么TABLEDW10,20,30,40,50ENTRYDW3MOVBX,OFFSETTABLEADD$BX,ENTRY"MOVAX,[BX]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,BP10.
DATASEGMENTTABLE_ADDRDW1234HDATAENDS.
.
.
.
.
.
MOVBX,TABLE_ADDRLEABX,TABLE_ADDR请写出上述两条指令执行后,BX寄存器中的内容.
11.
设(DS)=1B00H,(ES)=2B00H,有关存储器地址及其内容如右图所示,请用两条指令把X装入AX寄存器.
1B00:2000H8000H1B00:2002H2B00H2B00:8000HX12.
变量DATAX和DATAY定义如下:DATAXDW0148HDW2316HDATAYDW0237HDW4052H按下述要求写出指令序列:(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).
13.
试分析下面的程序段完成什么操作MOVCL,04SHLDX,CLMOVBL,AHSHLAX,CLSHRBL,CLORDL,BL14.
用其他指令完成和下列指令一样的功能:(1)REPMOVSB(2)REPLODSB(3)REPSTOSB(4)REPSCASB15.
编写程序段,比较两个5字节的字符串OLDS和NEWS,如果OLDS字符串与NEWS不同,则执行NEW_LESS,否则顺序执行程序.
16.
假定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_SMA17.
假如在程序的括号中分别填入指令:(1)LOOPL20(2)LOOPNEL20(3)LOOPEL20试说明在三种情况下,当程序执行完后,AX、BX、CX、DX四个寄存器的内容分别是什么TITLEEXLOOP.
COMCODESGSEGMENTASSUMECS:CODESG,DS:CODESG,SS:CODESGORG100HBEGIN:MOVAX,01MOVBX,02MOVDX,03MOVCX,04L20:INCAXADDBX,AXSHR$DX,1RETCODESGENDSENDBEGIN18.
变量N1和N2均为2字节的非压缩BCD数码,请写出计算N1与N2之差的指令序列.
19.
有两个3位的ASCII数串ASC1和ASC2定义如下:ASC1DB'578'ASC2DB'694'ASC3DB'0000'请编写程序计算ASC3←ASC1+ASC2.
20.
假设(CS)=3000H,(DS)=4000H,(ES)=2000H,(SS)=5000H,(AX)=2060H,(BX)=3000H,(CX)=5,(DX)=0,(SI)=2060H,(DI)=3000H,(43000H)=0A006H,(23000H)=0B116H,(33000H)=0F802H,(25060)=00B0H,.
(SP)=0FFFEH,(CF)=1,(DF)=1,请写出下列各条指令单独执行完后,有关寄存器及存储单元的内容,若影响条件码请给出条件码SF、ZF、OF、CF的值.
(1)SBBAX,BX(2)CMPAX,WORDPTR[SI+0FA0H](3)MULBYTEPTR[BX](4)AAM(5)DIVBH(6)SARAX,CL(7)XORAX,0FFE7H(8)REPSTOSB(9)JMPWORDPYR[BX](10)XCHGAX,ES:[BX+SI}参考答案1.
答案:DATSGSEGEMNTHIGH_DATDB95DAT_SG$ENDSSTK_SG"SEGMENTDW64DUP()STK_SGENDSCOD_SGSEGMENTMAINPROCFARASSUMECS:COD_SG,DS:DAT_SG,SS:STK_SGSTART:MOVAX,DAT-SGMOVDS,AXMOVAH,HIGH_DATMOVBH,AHMOVDL,AHMOVAH,4CHINT21HMAINENDPCOD_SGENDSENDSTART2.
答案:改正后:STAKSGSEGMENTDB100DUP()STAKSGENDSDTSEGSEGMENTDATA1DBDTSEGENDSCDSEGSEGMENTMAINPROCFARASSUMECS:CDSEG,DS:DTSEG,SS:STAKSGSTART:MOVAX,DTSEGMOVDS,AXMOVAL,34HADDAL,4FHMOVDATA1,ALMOVAH,4CHINT21HMAINENDPCDSEGENDSENDSTART3.
答案:编辑程序输出文件:(4)汇编程序输出文件:(1),(3),(5)连接程序输出文件:(2),(6)4.
答案:非法标号:(1)因为'.
'只允许是标号的第一个字符(2)第一个字符不能为数字(3)不允许出现'-'(4)不能是保留字,如助记符(5)不能有空格5.
答案:24字节6.
答案:不一样.
分别是72H,04H和04H,72H.
存储字时低8位存在低字节,高8位存在高字节.
7.
答案:(1)设置了4个字芢(2)设置了2个字节8n答案:(AX)=409.
答案:(1)源、目的字长不一致(2)源、目的不能同时举存贮器寻址方式(3)基坂变址方式不能有SI和DI的组合(4)基址变址方式不能有BX和BP的组合(5)在8086寻址方式中,AX不能作为基址寄存器使用,而且源、目的不能同时为存贮器寻址方式(6)1000超出一个字节的表数范围(7)OFFSET只用于简单变量,应去掉(8)CS不能作为目的寄存器(9)段地址不能直接送入数据段寄存器10.
答案:MOVBX,TABLE_ADDR;执行后(BX)=1234HLEABX,TABLE_ADDR;执行后(BX)=OFFSETTABLE_ADDR11、答案:LESBX,[2000H]MOVAX,ES:[BX]12.
答案:(1)MOVAX,DATAXADDAX,DATAYMOVBX,DATAX+2ADDBX,DATAY+2MOVDATAY,AXMOVDATAY+2,BX(2)MOVAX,DATAXADDDATAY,AXMOVAX,DATAX+2ADCDATAY+2,AX(3)MOVAX,DATAXMULDATAYMOVDATAY,AXMOVDATAY+2,DX(4)MOVAX,WORDPTRDATAXMOVBX,WORDPTRDATAYMULBXMOVRESULT,AXMOVRESULT+2,DXMOVAX,WORDPTRDATAXMOVAX,WORDPTRDATAY+2MULBXADDRESULT+2,AXADCRESULT+4,DXMOVAX,WORDPTRDATAX+2MOVBX,WORDPTRDATAYMULBXADDRESULT+2,AXADCRESULT+4,DXMOVAX,WORDPTRDATAX+2MOVBX,WORDPTRDATAY+2MULBXADDRESULT+4,AXADCRESULT+6,DX(5)MOVAX,DATAXMOVBL,23DIVBLMOVBL,AHMOVAH,0MOVDATAY,AX;存放商MOVAL,BLMOVDATAY+2,AX;存放余数(6)MOVAX,DATAXMOVDX,DATAX+2DIVDATAYMOVDATAY,AXMOVDATAY+2,DX13.
答案:将DX:AX中的双字左移4位(乘16)14.
答案:(1)LOOP1:MOVAL,BYTEPTR[SI]MOVES:BYTEPTR[DI],ALINCSI或:DECSIINCDI或:DECDILOOPLOOP1(2)LOOP1:MOVAL,BYTEPTR[SI]INCSI或:DECSILOOPLOOP1(3)LOOP1:MOVES:BYTEPTR[DI],ALINCDI或:DECDILOOPLOOP1(4)LOOP1:CMPAL,ES:BYTEPTR[DI]JEEXITINCDI或:DECDILOOPLOOP1EXIT:15.
答案:LEASI,OLDSLEADI,NEWSMOVCX,5CLDREPZCMPSBJNZNEW_LESS16.
答案:(1)CMPDX,CXJAEXCEED(2)CMPBX,AXJGEXCEED(3)CMPCX,0JEZERO(4)SUBBX,AXJOOVERFLOW(5)CMPBX,AXJLEQ_SMA(6)CMPDX,CXJBEQ_SMA17.
答案:(1)(AX)=5(BX)=16(CX)=0(DX)=0(2)(AX)=2(BX)=4(CX)=3(DX)=1(3)(AX)=3(BX)=7(CX)=2(DX)=018.
答案:MOVAX,0MOVAL,N1+1SUBAL,N2+1AASMOVDL,ALMOVAL,N1SBBAL,N2AASMOVDH,AL19.
答案:CLCMOVCX,3MOVBX,2BACK:MOVAL,ASC1[BX]ADCAL,ASC2[BX]AAAORASC3[BX+1],ALDECBXLOOPBACKRCLCX,1ORASC3[BX],CL20.
答案:(1)(AX)=0F05FH,(SF)=1,(ZF)=0,(OF)=0,(CF)=1(2)(SF)=1,(ZF)=0,(OF)=1,(CF)=1(3)(AX)=0240H,(OF)=1,(CF)=1(4)(AX)=0906H,(SF)=0,(ZF)=0(5)(AX)=20ACH(6)(AX)=0103H,(CF)=0(7)(AX)=0DF87H,(CF)=0,(OF)=0,,SF)=1,(ZF)=0(8)"(23000H)~(23004H)=60H,不影响标志位(9)(IP)=0A006H,不影响标志位(10)(AX)=00B0H,(25060)=2060H,不影响标志位第四章汇编语言程序设计习题1.
试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来.
2.
编写程序,比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示"MATCH",若不同则显示"NOMATCH".
3.
试编写程序,要求从键盘输入3个16进制数,并根据对3个数的比较显示如下信息:(1)如果3个数都不相等则显示0;(2)如果3个数中有2个数相等则显示2;(3)如果3个数都相等则显示3.
4.
已知整数变量A和B,试编写完成下述操作的程序:(1)若两个数中有一个是奇数,则将该奇数存入A中,偶数存入B中;(2)若两个数均为奇数,则两数分别加1,并存回原变量;(3)若两个数均为偶数,则两变量不变.
5.
把0~100之间的30个数,存入首地址为GRAD的字数组中,GRAD+i表示学号为i+1的学生成绩.
另一个数组RANK是30个学生的名次表,其中RANK+I的内容是学号为i+1的学生的名次.
试编写程序,根据GRAD中的学生成绩,将排列的名次填入RANK数组中(提示:一个学生的名次等于成绩高于这个学生的人数加1).
6.
分析下列程序的功能,写出堆栈最满时各单元的地址及内容.
SSEGSEGMENT'STACK'AT1000H;堆栈的段地址为1000HDW128DUP()TOSLABELWORDSSEGENDSDSEGSEGMENTDW32DUP()DSEGENDSCSEGSEGMENTMAINPROCFARASSUMECS:CSEG,DS:DSEG,SS:SSEGSTART:MOVAX,SSEGMOVSS,AX-MOVAX,DSEGMOVDS,AXMOVAX,4321H$CALLHTOARETN:MOVAH,4CHINT21HMAINENDPHTOAPROCNEARCMPAX,15JLEB1PUSHAXPUSHBPMOVBP,SPMOVBX,[BP+2]ANDBX,0FHMOV[BP+2],BXPOPBPMOVCL,4SHRAX,CLCALLHTOAB1:POPAXB2:ADDAL,30HJLPRTADDAL,07PRT:MOVDL,ALMOVAH,2INT21HRETHTOAENDPCSEGENDSENDSTART7.
写出分配给下列中断类型号在中断向量表中的物理地址.
(1)INT12H(2)INT88.
试编写程序,它轮流测试两个设备的状态寄存器,只要一个状态寄存器的第0位为1,则与其相应的设备就输入一个字符;如果其中任一状态寄存器的第3位为1,则整个输入过程结束.
两个状态寄存器的端口地址分别是0024和0036,与其相应的数据输入寄存器的端口则为0026和0038,输入字符分别存入首地址为BUFF1和BUFF2的存储区中.
9.
给定(SP)=0100,(SS)=0300,(FLAGS)=0240,存储单元的内容为(00020)=0040,(00022)=0100,在段地址为0900及偏移地址为00A0的单元中有一条中断指令INT8,试问执行INT8指令后,SP,SS,IP,FLAGS的内容是什么栈顶的三个字是什么10.
编写一个程序,接收仮键盘输入的10个十进制数字,输入回輦符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER.
加密表为辗入数字:0,1,2,3,4.
5,6,7,8,9密码数字:7,5,9,1,3,6,8,0,2,4参考答案1.
答案:abc:movah,1int21hcmpal,'a'jbstopcmpal,'z'jastopsubal,20hmovdl,almovah,2int21hjmpabcstop:ret2.
答案:datareasegmentstring1db'asfioa'string2db'xcviyoaf'mess1db'MATCH','$'mess2db'NOMATCH','$'datareaendsprognamsegmentmainprocfarassumecs:prognam,ds:datareastart:pushdssubax,axpushaxmovax,datareamovds,axmoves,axbegin:movcx,string2-string1movbx,mess1-string2cmpbx,cxjnzdispnoleadx,addrleasi,string1leadi,string2repecmpsbjnedispnomovah,9leadx,mess1int21hretdispno:movah,9leadx,mess2int21hretmainendpprognamendsendstart3.
答案:datasegmentarraydw3dup()dataendscodesegmentmainprocfarassumecs:code,ds:datastart:pushdssubax,axpushaxmovax,datamovds,axmovcx,3leasi,arraybegin:pushcxmovcl,4movdi,4movdl,''movah,02int21hmovdx,0input:movah,01int21handal,0fhshldx,clordl,aldecdijneinputmov[si],dxaddsi,2popcxloopbegincomp:leasi,arraymovdl,0movax,[si]movbx,[si+2]cmpax,bxjnenext1adddl,2next1:cmp[si+4],axjnenext2adddx,2next2:cmp[si+4],bxjnenumadddl,2num:cmpdx,3jldispmovdl,3disp:movah,2adddl,30hint21hretmainendpcodeendsendstart4.
答案:dsegsegmentadwbdwdsegendscsegsegmentmainprocfarassumecs:cseg,ds:dsegstart:pushdssubax,axpushaxmovax,dsegmovds,axbegin:movax,amovbx,bxorax,bxtestax,0001jzclasstestbx,0001jzexitxchgbx,amovb,bxjmpexitclass:testbx,0001jzexitincbincaexit:retmainendpcsegendsendstart5.
答案:dsegsegmentgradedw30dup()rankdw30dup()dsegendscsegsegmentmainprocfarassumecs:cseg,ds:dseg,es:dsegstart:pushdssubax,axpushaxmovax,dsegmovds,axmoves,axbegin:movdi,0movcx,30loop1:pushcxmovcx,30movsi,0movax,grade[di]movdx,0loop2:cmpgrade[si],axjbego_onincdxgo_on:addsi,2looploop2popcxincdxmovrank[di],dxsdddi,2looploop1retmainendpcsegendsendstart6.
答案:1000:0F2HB11000:0F4H31000:0F6HB11000:0F8H21000:0FAHB11000:0FCH11000:0FEHRETN1000:100H7.
答案:(1)00048h(2)00020h8.
答案:movsi,0movdi,0test12:inal,0024htestal,08jnzexitinal,0036htestal,08jnzexitdev1:inal,0024htestal,01jzdev2inal,0026hmovbuffer[si],alincsidev2:inal,0036htestal,01jztest12inal,0038hmovbuff2[di],alincdijmptest12exit:ret9.
答案:(SP)=00FA(SS)=0300(IP)=0040(FLAGS)=0040堆栈内容:00A1H0900H0240H10.
答案:scodedb7,5,9,1,3,6,8,0,2,4bufferdb10dup()movsi,0movcx,10leabx,scodeinput:movah,01int21hcmpal,0ahjzexitandal,0fhxlatmovbuffer[si],alincsiloopinputexit:ret第五章输入输出接口概述习题1.
试说明一般中断系统的组成和功能.
2.
什么是中断类型码、中断向量、中断向量表在基于8086/8088的微机系统中,中断类型码和中断向量之间有什么关系3.
什么是硬件中断和软件中断在PC机中两者的处理过程有什么不同4.
试叙述基于8086/8088的微机系统处理硬件中断的过程.
5.
在PC机中如何使用"用户中断"入口请求中断和进行编程6.
8259A中断控制器的功能是什么7.
8259A初始化编程过程完成那些功能这些功能由那些ICW设定8.
8259A在初始化编程时设置为非中断自动结束方式,中断服务程序编写时应注意什么9.
8259A的初始化命令字和操作命令字有什么区别它们分别对应于编程结构中那些内部寄存器10.
8259A的中断屏蔽寄存器IMR与8086中断允许标志IF有什么区别11.
若8086系统采用单片8259A中断控制器控制中断,中断类型码给定为20H,中断源的请求线与8259A的IR4相连,试问:对应该中断源的中断向量表入口地址是什么若中断服务程序入口地址为4FE24H,则对应该中断源的中断向量表内容是什么,如何定位12.
试按照如下要求对8259A设定初始化命令字:8086系统中只有一片8259A,中断请求信号使用电平触发方式,全嵌套中断优先级,数据总线无缓冲,采用中断自动结束方式.
中断类型码为20H~27H,8259A的端口地址为B0H和B1H.
13.
比较中断与DMA两种传输方式的特点.
参考答案1.
答:处理器内部应有中断请求信号的检测电路,输出中断响应信号,保存断点的逻辑,转向中断处理程序的逻辑,中断返回逻辑.
系统中要有一中断控制器,管理多个中断源,提供处理机所需的中断处理信息.
系统中请求中断处理的I/O接口电路要有提供中断请求信号及接收中断响应信号的逻辑.
2.
答:处理机可处理的每种中断的编号为中断类型码.
中断向量是指中断处理程序的入口地址,由处理机自动寻址.
中断向量表是存放所有类型中断处理程序入口地址的一个默认的内存区域.
在8086系统中,中断类型码乘4得到向量表的入口,从此处读出4字节内容即为中断向量.
3.
答:硬件中断是通过中断请求线输入电信号来请求处理机进行中断服务;软件中断是处理机内部识别并进行处理的中断过程.
硬件中断一般是由中断控制器提供中断类型码,处理机自动转向中断处理程序;软件中断完全由处理机内部形成中断处理程序的入口地址并转向中断处理程序,不需外部提供信息.
4.
答:以INTR请求为例.
当8086收到INTR的高电平信号时,在当前指令执行完且IF=1的条件下,8086在两个总线周期中分别发出INTA#有效信号;在第二个INTA#期间,8086收到中断源发来的一字节中断类型码;8086完成保护现场的操作,CS、IP内容进入堆栈,清除IF、TF;8086将类型码乘4后得到中断向量入口地址,从此地址开始读取4字节的中断处理程序的入口地址,8086从此地址开始执行程序,完成了INTR中断请求的响应过程.
5.
答:PC机中分配给用户使用的中断是IRQ9,经扩展插槽B4引出,故把用户的中断请求线连接到B4上.
在应用程序中,利用25H号系统调用将中断服务程序的入口地址写入对应0AH类型中断对应的中断向量表中去.
在应用程序中把主片8259AD2屏蔽位清0,把从片8259AD1屏蔽位清0,使主片的IR2、从片的R1可以输入中断请求.
中断服务程序结束前向主片8259A发中断结束命令.
应用程序结束之前对主片的IR2和从片的IR1进行屏蔽,关闭用户中断请求.
6.
答:8259A中断控制器可以接受8个中断请求输入并将它们寄存.
对8个请求输入进行优先级判断,裁决出最高优先级进行处理,它可以支持多种优先级处理方式.
8259A可以对中断请求输入进行屏蔽,阻止对其进行处理.
8259A支持多种中断结束方式.
8259A与微处理器连接方便,可提供中断请求信号及发送中断类型码.
8259A可以进行级连以便形成多于8级输入的中断控制系统.
7.
答:初始化编程用来确定8259A的工作方式.
ICW1确定8259A工作的环境:处理器类型、中断控制器是单片还是多片、请求信号的电特性.
ICW2用来指定8个中断请求的类型码.
ICW3在多片系统中确定主片与从片的连接关系.
ICW4用来确定中断处理的控制方法:中断结束方式、嵌套方式、数据线缓冲等.
8.
答:在中断服务程序中,在返回主程序之前按排一条一般中断结束命令指令,8259A将ISR中最高优先级位置0,结束该级中断处理以便为较低级别中断请求服务.
9.
答:8259A的工作方式通过微处理器向其写入初始化命令字来确定.
初始化命令字分别装入ICW1~ICW4内部寄存器.
8259A在工作过程中,微处理器通过向其写入操作命令字来控制它的工作过程.
操作命令字分别装入OCW1~OCW3内部寄存器中.
8259A占用两个端口号,不同的命令字对应不同的端口,再加上命令字本身的特征位及加载的顺序就可以正确地把各种命令字写入对应的寄存器中.
10.
答:IF是8086微处理器内部标志寄存器的一位,若IF=0,8086就不响应外部可屏蔽中断请求INTR引线上的请求信号.
8259A有8个中断请求输入线,IMR中的某位为1,就把对应这位的中断请求IR禁止掉,无法被8259A处理,也无法向8086处理器产生INTR请求.
11.
答:中断向量表入口地址为:0段的0090H地址.
对应4FE24H中断服务程序入口,在向量表中定位情况:(0090H)=24H、(0091H)=00H、(0092H)=E0H、(0093H)=4FH.
12.
答:ICW1=1BH(送B0H端口),ICW2=20H(送B1H端口),ICW4=03H(送B1H端口)13.
答:中断方式下,外设需与主机传输数据时要请求主给予中断服务,中断当前主程序的执行,自动转向对应的中断处理程序,控制数据的传输,过程始终是在处理器所执行的指令控制之下.
直接存储器访问(DMA)方式下,系统中有一个DMA控制器,它是一个可驱动总线的主控部件.
当外设与主存储器之间需要传输数据时,外设向DMA控制器发出DMA请求,DMA控制器向中央处理器发出总线请求,取得总线控制权以后,DMA控制器按照总线时序控制外设与存储器间的数据传输而不是通过指令来控制数据传输,传输速度大大高于中断方式.
第六章可编程接口芯片习题1、设8253三个计数器的端口地址为201H、202H、203H,控制寄存器端口地址200H.
试编写程序片段,读出计数器2的内容,并把读出的数据装入寄存器AX.
2、设8253三个计数器的端口地址为201H、202H、203H,控制寄存器端口地址200H.
输入时钟为2MHz,让1号通道周期性的发出脉冲,其脉冲周期为1ms,试编写初化程序段.
3、设8253计数器的时钟输入频率为1.
91MHz,为产生25KHz的方波输出信号,应向计数器装入的计数初值为多少4、设8253的计数器0,工作在方式1,计数初值为2050H;计数器1,工作在方式2,计数初值为3000H;计数器2,工作在方式3,计数初值为1000H.
如果三个计数器的GATE都接高电平,三个计数器的CLK都接2MHz时钟信号,试画出OUT0、OUT1、OUT2的输出波形.
5、可编程计数/定时器芯片8253有几个通道各采用几种操作方式简述这些操作方式的主要特点.
6、某系统中8253芯片的通道0~通道2和控制字端口号分别为FFF0H~FFF2H,定义通道0工作在方式2,CLK0=5MHz,要求输出OUT0=lkHz方波;定义通道l工作在方式4,用OUT0作计数脉冲,计数值为1000,计数器计到0,向CPU发中断请求,CPU响应这一中断后继续写入计数值1000,重新开始计数,保持每1秒钟向CPU发出一次中断请求,请编写初始化程序,画出硬件连接图.
7、什么叫DMA传送方式DMA控制器8257的主要功能是什么8、某8086系统中使用8257完成从存储器到外设端口的数据传送任务,若已知通道0的地址寄存器、终点计数器、方式寄存器端口地址分别为置EEE0H,EEElH和EEE8H,要求通过通道0将存储器中偏移地址为1000H~10FFH的内容传送到显示器输出,请编写初始化程序.
9、用8255和8253编程,使扬声器发出600Hz的可听频率,击任一键停止.
(其中主时钟为1.
9318MHz,一个时钟周期为888.
2229*10—9秒.
)10、设状态端口地址为86H,数据端口地址为87H,外部输入信息准备好状态标志为D7=1.
请用查询方式写出读入外部信息的程序段.
11、设状态端口地址为76H,数据端口地址为75H,外设是否准备好信息由D7位传送,D7=l为准备好,D7=0为未准备好(忙),请用查询方式写出CPU向外部传送数据的程序段.
12、什么是A/D、D/A转换器13、某接口设计采用一片8255A实现.
其端口A连接并行打印机,端口B连接纸带读入机,如图所示.
8255A工作于方式0,以查询方式查询数据.
14、CPU通过8255同开关K0~K3和LED显示器的接口见下图,开关设置的二进制信息由B口输入,经程序转换成对应的七段LED段码后,通过A口输出,由七段LED显示开关二进制的状态值,试编写其控制程序(设8255的端口地址为80H~83H).
注:若B口读入的值为0000,则LED显示器将显示0;以此类推,若B口读入的值为1111,则LED显示器将显示F.
15、查询方式打印机接口如图所示,图中的8255A的B口作为输出打印数据口,工作于方式0,PC5引脚作为打印机的数据选通信号STB,由它产生一个负脉冲,将数据线D7-D0上的数据送入打印机,PC0引脚接收打印机的忙状态信号,当打印机在打印某字符时,忙状态信号BUSY为1.
现要求打印的字符存于缓冲区BUF中,共有800个字符.
设8255A的端口地址为800H--803H.
利用查询BUSY信号,编写CPU与打印机之间数据交换的程序段(包括8255A初始化).
16、计数器/定时器8253,振荡器(频率为2MHZ)振荡器的脉冲输出端接通道0的计数输入端CLK0,设8253的端口地址为200H---203H请回答:(1)该电路中一个通道的最大定时时间是多少如何计算(2)若要8253的OUT端,能产生周期为1秒的连续方波,该如何解决(3)写出实现功能的8253初始化程序.
17、某数据采集系统中,有一片8255A芯片,其端口地址为40H--43H,其中A口作为现场数据的输入口,工作方式0.
又有一频率为2MHz的信号源作为8253定时器CLK0输入.
现要求8255A以2s为周期进行数据采集,利用一片8253实现系统定时,8253的端口地址为50H--53H,接线如图所示.
计算各通道计数值,写出8255A、8253初始化程序段.
18、设计一个利用8255PC5输出占空比1:1的方波电路,并编写相应的程序.
19、假设中断源类型码为58H,中断服务程序的标号为INTPT.
分析下列程序,指出其功能.
PUSHDSMOVAX,SEGINTPTMOVDS,AXMOVDX,OFFSETINTPTMOVAH,25HMOVAL,58HINT21HPOPDS参考答案1、答:MOVAL,80HOUT200H,ALINAL,203HMOVBL,ALINAL,203H,MOVBH,ALMOVAX,BX2、答:要输出脉冲周期为1ms,输出脉冲的频率是1000,当输入时钟频率为2MHz时,计数器初值是2000.
使用计数器1,先读低8位,后读高8位,设为方式3,二进制计数,控制字是76H.
设控制口的地址是200H,计数器0的地址是202H.
程序段如下:MOVDX,200HMOVAL,76HOUTDX,,ALMOVDX,202HMOVAX,2000OUTDX,ALMOVAL,AHOUTDX,AL3、答:1.
91MHZ/25KHZ=76.
4,应向计数器装入的初值是76.
4、答:计数器0工作在方式1,即可编程的单脉冲方式.
这种方式下,计数的启动必须由外部门控脉冲GATE控制.
因为GATE接了高电平,当方式控制字写入后OUT0变高,计数器无法启动,所以OUT0输出高电平.
计数器1工作在方式2,即分频器的方式.
输出波形的频率f=Foc/N=2MHz/3000=666.
7HZ,其周期为1.
5ms,输出负脉冲的宽度等于CLK的周期为0.
5μs.
计数器2工作在方式3,即方波发生器的方式.
5、答:有0,1,2三个通道,各通道有六种工作方式,以完成定时,计数,脉冲发生器等多种功能.
(1)工作方式0:计数结束中断方式(2)工作方式1:可编程单脉冲发生器(3)工作方式2:速率波发生器(4)工作方式3:方波发生器(5)工作方式4:软件触发方式(6)工作方式5:硬件触发方式6、答:STT:MOVDX,0FF0HMOVAL,34HOUTDX,ALMOVDX,通道0端口地址MOVAX,1388HOUTDX,ALMOVAL,AHOUTDX,ALMOVDX,0FFF1HMOVAL,78HOUTDX,ALMOVDX,通道1端口地址MOVAX,2710HOUTDX,ALMOVAL,AHOUTDX,ALMOVDX,0FFF2HMOVAL,B1HOUTDX,ALMOVDX,通道2端口地址MOVAX,1000HOUTDL,ALMOVAL,AHOUTDX,AL对8259A初始化(略)HH:HLTJMPHH7、答:DMA传送方式就是用DMA控制器来接管CPU对总线的控制权.
在存储器与局速外设之间建立直接进行数据块传送与高速通路.
主要功能有三个(1)DMA读操作—读存储器送外设(2)DMA写操作—对外设写存储器(3)DMA校验操作—通道不进行数据传送操作,只是完成校验操作.
8、答:ST57:MOVDX,0EEE8HMOVAL,41HOUTDX,ALMOVDX,0EEE0HMOVAX,1000HOUTDX,ALMOVAL,AHOUTDX,ALMOVDX,0EEE1HMOVAL,0FFHOUTDX,ALHLT9、答:STACKSEGMENTPARASTACK'STACK'DB256DUP(0)STACKENDSDATASEGMENTPARAPUBLIC'DATA'FREGDW1989;600周方波计数值DATAENDSCODESEGMENTPARTPUBLIC'CODE'STARTPROCFARASSUMECS:CODE,DS:DATAPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXINAL,61HORAL,3OUT61H,ALMOVAL,0B6HOUT43H,ALMOVBX,FREGMOVAL,BLOUT42H,ALMOVAL,BHOUT42H,ALMOVAH,0INT16HINAL,61HANDAL,0FCHOUT61H,ALRETSTARTENDPCODEENDSENDSTART10、答:POLL:INAL,86H;从状态端口输入状态信息TESTAL,80H;检查READY是否是1JEPOLL;为准备好,循环INAL,87H;准备好,从数据端口输入数据11、答:POLL:INAL,76H;从状态端口输入状态信息TESTAL,80H;检查忙标志位JNEPOLL;忙等待MOVAL,DATA;从缓冲区取数据OUT75H,AL;从数据端口输出12、答:把模拟量信号转换成数字量的器件为模/数转换器,简称为A/D转换器.
把数字量信号转换成模拟量的器件为数/模转换器,简称为D/A转换器.
13、答:8255A初始化程序段MOVAL,83HOUT0E6H,ALMOVAL,09HOUT0E6H,ALMOVAL,0BHOUT0E6H,AL打印机驱动程序段LIST:INAL,0E4HANDAL,04HJNZLPSTMOVAL,CLOUT0E0H,ALMOVAL,08HOUT0E6H,ALINCALOUT0E6H,AL纸带读入机驱动程序段RDST:MOVAL,0AHOUT0E6H,ALRDLP:INAL,0E4HANDAL,08HJZRDLPIN0E2HMOVCL,ALMOVAL,08HOUT0E6H,AL14、答:SEGCODEDB0C0H,0F9H,A4H,B0H,…,8EH…………….
MOVAL,10000010BOUT83H,ALLOP:INAL,81HANDAL,0FHMOVBX,OFFSETSEGCODEXLATOUT80H,ALJMPLOP15、答:BUFDB'XXXXXXX…….
.
'MOVDX,803HMOVAL,1xxx0001BOUTDX,ALMOVAL,0BHOUTDX,ALMOVCX,800MOVSI,OFFSETBUFLOP:MOVDX,802HINAL,DXTESTAL,01HJNZLOPMOVAL,[SI]MOVDX,801HOUTDX,ALMOVAL,0AHMOVDX,803HOUTDX,ALMOVAL,0BHOUTDX,ALINCSILOOPLOPHLT16、答:(1)输入脉冲周期=0.
5Μs,一个通道最大计数为65536=216,所以最大定时时间=0.
5μS*65536=65.
536ms(2)可以将8253的通道串联使用,各通道的计数:通道0=2000,通道1=1000(3)MOVAL,00100101BMOVDX,203HOUTDX,ALMOVAL,20HMOVDX,200HOUTDX,ALMOVAL,01100101BMOVDX,203HOUTDX,ALMOVDX,201HMOVAL,10HOUTDX,AL17、答:总计数值:2MHz/0.
5Hz=4x106通道0计数值:T0=50000(C350H),工作于方式3通道1计数值:T1=80,工作于方式2MOVAL,1001xxxxBOUT43H,ALMOVAL,54HOUT53H,ALMOVAL,80OUT51H,ALMOVAL,36HOUT53H,ALMOVAL,50HOUT50H,ALMOVAL,0C3HOUT50H,AL18、答:方波电路图:程序:MOVDX,34CHMOVAL,80H;PA、PB方式0输出,PC7-0输出YYY1:MOVAL,0AH;C端口置1/置0控制字,使PC5输出低电平OUTDX,ALMOVCX,2000HYYY2:ADDAX,0;让PC5输出低电平维持一段时间LOOPYYY2MOVAL,0BH;C端口置1/置0控制字,使PC5输出高电平OUTDX,ALMOVCX,2000HYYY3:ADDAX,0LOOPYYY3JMPYYY119、类型码为58H,则中断矢量地址为58H*4=0160H.
建立中断矢量表.
第七章存储器习题1、在对存储芯片进行译码寻址时,如果只有部分高位地址参与,这种译码方法被称为部分译码.
现有EPROM芯片2732(4KX8位),以及3-8译码器74LS138,各种门电路若干,要求在8088CPU上扩展容量为16KX8EPROM内存,要求采用部分译码,不使用高位地址线A19、A18、A15,选取其中连续、好用又不冲突的一组地址,要求首地址为20000H.
请回答:1)2732的芯片地址线、数据线位数是多少2)组成16KX8需要2732芯片多少片3)写出各芯片的地址范围.
4)画出存储扩展图(要求画出地址线、数据线及控制线的连接)2、有一个2732EPROM(4KX8)芯片的译码电路如下图所示,试求:(1)计算2732芯片的存储容量;(2)给出2732芯片的地址范围;(3)是否存在地址重叠区3、现在有静态RAM芯片2KX8,4KX8,8KX8,以及3—8译码器74LS138,各种门电路若干,供任意选择使用.
要求在8088CPU上扩展容量为8KX8内存,地址从84000H开始.
画出8088系统扩展图,写出内写储内存各芯片的起、止地址.
在前面的文章中就有介绍到半月湾Half Moon Bay Cloud服务商有提供洛杉矶DC5数据中心云服务器,这个堪比我们可能熟悉的某服务商,如果我们有用过的话会发现这个服务商的价格比较贵,而且一直缺货。这里,于是半月湾服务商看到机会来了,于是有新增同机房的CN2 GIA优化线路。在之前的文章中介绍到Half Moon Bay Cloud DC5机房且进行过测评。这次的变化是从原来基础的年付49....
易探云服务器怎么样?易探云是国内一家云计算服务商家,致力香港云服务器、美国云服务器、国内外服务器租用及托管等互联网业务,目前主要地区为运作香港BGP、香港CN2、广东、北京、深圳等地区。目前,易探云推出的国内云服务器优惠活动,国内云服务器2核2G5M云服务器低至330元/年起;成都4核8G/200G硬盘/15M带宽,仅1888元/3年起!易探云便宜vps服务器配置推荐:易探云vps云主机,入门型云...
部落曾经在去年分享过一次Boomer.host的信息,商家自述始于2018年,提供基于OpenVZ架构的VPS主机,配置不高价格较低。最近,主机商又在LET发了几款特价年付主机促销,最低每年仅4.95美元起,有独立IPv4+IPv6,开设在德克萨斯州休斯顿机房。下面列出几款VPS主机配置信息。CPU:1core内存:512MB硬盘:5G SSD流量:500GB/500Mbps架构:KVMIP/面板...