版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.z.答案第一章1.将以下十进制数转换成二进制数。〔1〕49〔2〕49.75〔3〕100〔4〕100.8125解:〔1〕〔49〕10=〔110001〕2〔2〕〔49.75〕10=〔110001.11〕2〔3〕〔100〕10=〔1100100〕2〔4〕〔100.8125〕10=〔1100100.1101〕22.将以下十六进制数转换成二进制数和十进制数。〔1〕FAH〔2〕78A2H〔3〕FFFFH〔4〕3CH解:〔1〕〔FA〕16=〔11111010〕2=〔250〕10〔2〕〔78A2〕16=〔0010〕2=〔30882〕10〔3〕〔FFFF〕16=〔11111〕2=〔65535〕10〔4〕〔3C〕16=〔111100〕2=〔60〕10 3.将以下二进制数转换成十六进制数和八进制数。〔1〕101101.11〔2〕1111111〔3〕1101001011.01〔4〕10111101解:〔1〕〔101101.11〕2=〔2D.C〕16=〔55.6〕8〔2〕〔1111111〕2=〔7F〕16=〔177〕8〔3〕〔1101001011.01〕2=〔34B.4〕16=〔1513.2〕8〔4〕〔10111101〕2=〔BD〕16=〔275〕84.设机器字长为8位,写出以下各二进制数的原码、反码和补码。〔1〕+1010101〔2〕-1000000〔3〕+1111111〔4〕-1111111解:〔1〕原码:01010101;反码:01010101;补码:01010101。〔2〕原码:11000000;反码:10111111;补码:11000000。〔3〕原码:01111111;反码:01111111;补码:01111111。〔4〕原码:11111111;反码:10000000;补码:10000001。5.设以下四组为8位二进制补码表示的十六进制数,计算a+b和a-b,并判断其结果是否溢出。〔1〕a=0F6H,b=0D5H〔2〕a=0B7H,b=0C7H〔3〕a=37H,b=67H〔4〕a=73H,b=7BH解:〔1〕a+b=CBH,没有发生溢出;a-b=21H,没有发生溢出。〔2〕a+b=7EH,发生溢出;a-b=F0H,没有发生溢出。〔3〕a+b=9EH,发生溢出;a-b=D0H,没有发生溢出。〔4〕a+b=EEH,发生溢出;a-b=F8H,没有发生溢出。6.a=00111000B,b=11110011B,计算以下逻辑运算。〔1〕aANDb〔2〕aORb〔3〕a*ORb〔4〕NOTa解:〔1〕aANDb=00110000B〔2〕aORb=11111011B〔3〕a*ORb=11001011B〔4〕NOTa=11000111B7.将以下算式中的十进制数表示成组合BCD码进展运算,并根据需要进展调整。〔1〕38+42〔2〕56+77〔3〕99+77〔4〕34+7解:〔1〕00111000+0100001001111010+011010000000〔80〕〔2〕01010110+0111011111001101+011001101〔133〕〔3〕10011001+01110111100010000+011001100〔176〕〔4〕00110111+0000011100111011+011001000001〔41〕8.将以下字符串表示成相应的ASCII码〔用十六进制数表示〕。〔1〕102〔2〕ABC〔3〕ASCII〔4〕abc解:〔1〕313032H〔2〕414243H〔3〕4153434949H〔4〕616263H9.[*]原=10101100B,计算[〔1/2〕*]补及[〔-1/2〕*]补的值。解:∵[*]原=10101100B∴[〔1/2〕*]原=10010110B,[〔-1/2〕*]原=00010110B∴[〔1/2〕*]补=11101010B,[〔-1/2〕*]补=00010110B10.请将十进制数7.5表示成二进制浮点规格化数〔阶符1位,阶码2位,数符1位,尾数4位〕。解:十进制数7.5用二进制表示为:111.1B111.1B=0.1111×2+3浮点规格化数表示成:01101111。第二章1.8086/8088微处理器从逻辑构造上可以分成哪两局部?试说明每一局部的组成与功能。答:8086/8088微处理器从逻辑构造上可以分成执行单元〔EU〕和总线接口单元〔BIU〕。执行部件〔EU〕包含一个16位的算术逻辑单元〔ALU〕、一个16位反映CPU状态和控制标志的状态标志存放器〔FLAG〕、一组8个16位通用存放器组、数据暂存存放器和EU的控制电路。总线接口部件〔BIU〕包含一组段存放器〔CS,SS,DS和ES〕、一个指令指针存放器〔IP〕、4或6个字节的指令队列、地址形成器件和总线控制逻辑。EU的功能是负责指令的执行;BIU的功能是根据EU的请求,完成CPU与存储器或I/O接口间的数据传送。2.写出8086/8088CPU中14个16位存放器的名称。答:8086/8088CPU中14个16位存放器的名称如下:A*:累加器。B*:基址存放器。C*:计数存放器。D*:数据存放器。SP:堆栈指针存放器。BP:基地址指针存放器。SI:源变址存放器。DI:目的变址存放器。CS:代码段存放器。DS:数据段存放器。SS:堆栈段存放器。ES:附加段存放器。IP:指令指针存放器。FLAG:标志存放器。3.写出8086/8088CPU标志存放器中的6个状态标志位和3个控制标志位的定义。答:6个状态标志位的定义如下:CF:进位标志;当最高位有进位或借位时,CF=1;否则CF=0;PF:奇偶标志;当运算结果中低8位中“1”的个数为偶数时,PF=1;否则PF=0;AF:辅助进展标志;当D3向D4有进位或借位时,AF=1;否则AF=0;ZF:零标志;运算结果每位都为0时,ZF=1;否则ZF=0;SF:符号标志;运算结果的最高位为1时,SF=1;否则SF=0;OF:溢出标志;两个符号数进展运算产生溢出时,OF=1;否则OF=0。3个控制标志位的定义如下:TF:陷阱标志;当TF=1时,CPU将进入单步执行工作方式;IF:中断标志;当IF=1时允许CPU响应可屏蔽中断;当IF=0时制止CPU响应可屏蔽中断;DF:方向标志;当DF=0时,串操作指令时地址朝增加方向;当DF=1时,串操作指令时地址朝减少方向。4.在8086/8088CPU中,十六进制补码数8070H与9E85H进展加法运算,请写出运算完毕后SF、OF、CF、AF、ZF及PF标志位的值?解:8070H10000+9E85H00101128F5H+从运算结果可以看出:SF=0;OF=1;AF=0;CF=1;ZF=0;PF=1。5.写出8086/8088CPU引脚中ALE、NMI、INTR、及的含义及输入/输出方向。答:ALE:地址锁存输出信号。NMI:非屏蔽中断请求输入信号。INTR:可屏蔽中断请求输入信号。:中断响应输出信号。:数据传送方向输出信号。6.8088CPU中的RESET、READY信号的作用分别是什么?答:RESET:CPU复位输入信号,高电平有效。当此输入线有效并维持至少4个时钟周期时完成CPU部复位操作。复位后CPU的存放器及引脚处于初始状态。READY:准备就绪输入信号,高电平有效。用于协调CPU与存储器或I/O端口之间的数据传送。当CPU对存储器或I/O进展操作时,在T3周期开场采样READY信号。假设其为低电平,说明被访问的存储器或I/O还未准备就绪;假设其为高电平,说明被访问的存储器或I/O已准备就绪。7.写出段基址、偏移地址、逻辑地址和物理地址的含义,同时写出它们之间的联系。答:段基址:段首地址的高16位地址码,常存于相应的段存放器中;偏移地址:段的相对地址,也称有效地址;逻辑地址:由段基址与段偏移地址组合表示存储单元地址;物理地址:用20位二进制编号表示存储单元地址;物理地址=段基址×16+段偏移地址。8.试填写物理地址。〔1〕CS=1200H,IP=2500H,物理地址为14500H。〔2〕DS=39A0H,B*=4700H,物理地址为3E100H。〔3〕ES=6200H,DI=2000H,物理地址为64000H。〔4〕SS=8200H,BP=1050H,物理地址为83050H。9.请画出8088CPU一个根本的存储器写总线周期时序图。一个总线周期CLKT1T2T3T4一个总线周期CLKT1T2T3T4A19~A16/S6~S3地址输出状态输出A15~A8地址输出AD7~AD0地址输出数据输出ALEIO/MWRDT/RDEN10.请写出时钟周期、总线周期与指令周期的含义。答:时钟周期是CPU的根本时间计量单位,即计算机主频的倒数。总线周期是指CPU通过总线对存储器或I/O端口进展一次访问〔读/写操作〕所需的时间;一个总线周期至少包含4个时钟周期,即T1、T2、T3、T4。指令周期是指计算机完成一条指令的执行所需要的时间。11.在总线周期的T1、T2、T3和T4状态,CPU分别执行什么动作?什么情况下需要插入等待状态TW?TW插入的位置?答:在T1状态,BIU把要访问的存储器单元或I/O端口的地址输出到总线。在T2状态,地址/数据复用总线停顿输出地址信号。假设是读周期,T2中地址/数据复用总线处于高阻状态,CPU有足够的时间使其从输出方式变为输入方式;假设为写周期,CPU不必转变输出方式。在T3~T4状态,CPU与存储器或I/O接口进展数据传送。CPU假设与慢速的存储器或I/O端口之间的数据传送,READY信号在T3状态时仍为低电平,则在T3之后插入等待状态TW,参加TW的个数由外设的速度与CPU速度匹配决定。12.8088CPU工作在最小模式下,请答复以下问题:〔1〕CPU访问存储器时,需要哪些信号?〔2〕CPU访问I/O接口时,需要哪些信号?〔3〕当HOLD有效并得到响应时,CPU的哪些信号置高阻状态?答:〔1〕利用A15~A8,AD7~AD0,ALE,,,,,。〔2〕利用A15~A8,AD7~AD0,ALE,,,,,。〔3〕当HOLD有效并得到响应时,CPU中呈高阻状态的信号有:A15~A8,AD7~AD0,ALE,,,,,。第三章1.按照题目中提出的要求,写出能到达要求的一条〔或几条〕汇编形式的指令。〔1〕将立即数1234H送入存放器B*;〔2〕将立即数1234H送入段存放器DS;〔3〕将变址存放器DI的容送入数据段中2000H的存储单元;〔4〕把数据段中2000H存储单元的容送段存放器ES;〔5〕将立即数0ABH与AL相加,结果送回AL;〔6〕把B*与C*存放器容相加,结果送入B*;〔7〕存放器B*中的低4位容保持不变,其它位按位取反,结果仍在B*中;〔8〕实现A*与8位数-128的乘积运算;〔9〕实现C*中高、低8位容的交换;〔10〕将D*中D0、D5、D8位置1,其余位保持不变。解:〔1〕MOVB*,1234H〔2〕MOVA*,1234HMOVDS,A*〔3〕MOV[2000H],DI〔4〕MOVES,[2000H]〔5〕ADDAL,0ABH〔6〕ADDB*,C*〔7〕*ORB*,0FFF0H〔8〕MOVBL,80HIMULBL〔9〕*CHGCH,CL〔10〕ORD*,0121H2.顺序执行以下指令,填写指令后的空格。MOVA*,2000H;AH=20HMOVDS,A*;AL=00H;DS=2000HMOVB*,2030H;BH=20H;BL=30HMOVSI,B*;SI=2030HPUSHB*POPC*;B*=2030H;C*=2030H*CHGA*,SI;A*=2030H;SI=2000HADDA*,0F43H;A*=2F73H;CF=0CWD;A*=2F73H;D*=0000HSHLAL,CL;AL=00H;CL=30HORA*,5555H;A*=7F55HANDA*,0AA55H;A*=2A55HMOVBL,0FFHMULBL;A*=54ABHIMULBL;A*=0055H3.指出以下各条指令中源操作数字段的寻址方式。〔1〕MOVA*,0ABH;立即寻址方式〔2〕MOVA*,B*;存放器寻址方式〔3〕MOVA*,[1234H];直接寻址方式〔4〕MOVA*,[B*];存放器间接寻址方式〔5〕MOVA*,[B*+10];存放器相对寻址方式〔6〕MOVA*,[B*][SI];基址变址寻址方式〔7〕MOVA*,03H[B*][SI];相对基址变址寻址方式〔8〕ADDB*,[SI];存放器间接寻址方式〔9〕ANDA*,1234H;立即寻址方式〔10〕*ORC*,A*;存放器寻址方式4.如果TABEL为数据段中0032H单元的符号名,其中存放的容为1234H,填写以下指令执行后空格中的容。MOVA*,TABEL;A*=1234HLEAA*,TABEL;A*=0032H5.画出执行以下指令过程中堆栈区和SP的容变化过程示意图,并标出存储单元的物理地址。MOVA*,1000HMOVSS,A*MOVSP,0100H;=1\*GB3①MOVB*,SPPUSHA*;=2\*GB3②PUSHB*;=3\*GB3③POPC*;=4\*GB3④HLT10100H100FEH10100H100FEH100FCH10H00H01H00H最后指令位置=3\*GB3③=2\*GB3②=4\*GB3④=1\*GB3①6.标出以下指令的执行顺序。〔1〕MOVA*,1234H〔2〕CMPA*,8234H〔3〕JCNE*T1〔4〕CBW〔5〕NE*T1:MOVB*,9876H〔6〕CMPB*,A*〔7〕NE*T2〔8〕SHRA*,1〔9〕NE*T2:ANDB*,1010H〔10〕HLT解:指令的执行顺序:〔1〕→〔2〕→〔3〕→〔5〕→〔6〕→〔7〕→〔8〕→〔9〕→〔10〕。7.指令REPMOVSB,REPLODSB,REPSTOSB及REPESCASB中,哪一条能替代以下程序段。ABC:MOVAL,[SI]MOVES:[DI],ALINCSIINCDILOOPABC解:指令REPMOVSB能替代上述程序段。8.顺序执行以下各条指令,填写空格。MOVB*,6534H;B*=6534H*ORB*,0FFFFH;B*=9ACBHANDB*,15A0H;B*=1080HORB*,2379H;B*=33F9HTESTB*,0002H;B*=33F9H9.试写出执行以下3条指令后B*存放器的容。MOVCL,21HMOVB*,6D16HSHRB*,CL解:B*=0000H10.试分析以下程序段所完成的功能。MOVCL,04SHLD*,CLMOVBL,AHSHLA*,CLSHRBL,CLORDL,BL解:程序段完成由D*和A*共同组成的32位数向左移动4位。11.假定A*和B*中容为有符号数,C*和D*中的容为无符号数,请用比拟指令和条件转移指令实现以下判断:〔1〕假设D*的容超过C*的容,则转去执行E*CEED;〔2〕假设B*的容大于A*的容,则转去执行E*CEED;〔3〕B*的容大于等于A*的容,则转去执行E*CEED;〔4〕假设C*的容等于0,则转去执行ZERO;〔5〕假设B*与A*的容相等,则转去执行EQ;〔6〕假设B*的容小于等于A*的容,则转去执行EQSMA;〔7〕假设C*的容等于5678H,则转去执行EQ;〔8〕假设D*的容低于C*的容,则转去执行EQSM;〔9〕假设A*的容为正,则转去执行ABC;〔10〕假设A*的容为负,则转去执行ABC1。解:〔1〕CMPD*,C*JAE*CEED〔2〕CMPB*,A*JGE*CEED〔3〕CMPB*,A*JGEE*CEED〔4〕CMPC*,0JZZERO〔5〕CMPB*,A*JZEQ〔6〕CMPB*,A*JLEEQSMA〔7〕CMPC*,5678HJZEQ〔8〕CMPD*,C*EQSM〔9〕ADDA*,0JNSABC〔10〕ADDA*,0JSABC112.编写程序段,实现十六进制数12345678H与76543210H相减运算,运算结果存入D*、A*中,其中D*存放高位。解:参考程序段如下:MOVA*,5678HSUBA*,3210HMOVD*,1234HSBBD*,7654HHLT13.编写程序段,实现十进制数12345678与76543210相加运算,运算结果用BCD码表示,并存入D*、A*中,其中D*存放高位。解:MOVAL,78HADDAL,10HDAAMOVBL,ALMOVAL,56HADCAL,32HDAAMOVAH,ALMOVAL,34HADCAL,54HDAAMOVDL,ALMOVAL,12HADCAL,76HDAAMOVDH,ALMOVAL,BLHLT14.编写程序段,将附加段中1000H单元开场的100字节单元清零。解:参考程序段如下:MOVC*,0064HMOVDI,1000HCLDMOVAL,00HREPSTOSBHLT15.编写程序段,将数据段中1000H单元开场的100字节单元均存放23H。解:参考程序段如下:MOVC*,0064HMOVA*,DSMOVES,A*MOVDI,1000HCLDMOVAL,23HREPSTOSBHLT第四章汇编语言源程序设计1.画出数据段汇编后相应存储单元中的容并标出存储单元的逻辑地址。DATASEGMENTORG0100HABC0EQU78HABCDB09H,-2,45H,2DUP〔01H,?〕,‘AB’ABC1DW-2,34H+ABC0,$ABC2DD12HABC3DWABCDATAENDS解:DS:0100HABC→09HDS:0101HFEHDS:0102H45HDS:0103H01HDS:0104H-DS:0105H01HDS:0106H-DS:0107H41HDS:0108H42HDS:0109HABC1→FEHDS:010AHFFHDS:010BHACHDS:010CH00HDS:010DH0DHDS:010EH01HDS:010FHABC2→12HDS:0110H00HDS:0111H00HDS:0112H00HDS:0113HABC3→00HDS:0114H01H2.设程序中的数据定义如下: PARTNODW" PNAMEDB16DUP(") COUNTDD" PLENTHEQU$-PARTNO问PLENTH的值为多少?它的含义是什么?解:PLENTH的值为22〔16H〕。表示当前位置与PARTNO之间有22个字节空间。3.假设程序中的数据定义如下: LNAMEDB30DUP〔"〕 ADDRESSDB30DUP〔"〕 CITYDB15DUP〔"〕CODE_LISTDB1,7,8,3,2〔1〕用一条MOV指令将LNAME的偏移地址放入A*;〔2〕用一条指令将CODE_LIST的头两个字节的容放入SI:〔3〕写一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。解:〔1〕MOVA*,OFFSETLNAME〔2〕MOVSI,WORDCODE_LIST〔3〕CODE_LENGTHEQU$-CODE_LIST4.执行以下程序段后,A*、B*的容各是什么?MOVA*,0001HMOVB*,8000HNEGA*MOVC*,4AA:SHLA*,1RCLB*,1LOOPAAHLT解:A*=0FFF0H,B*=000FH5.阅读以下程序,答复以下问题DATASEGMENTABCDB90H,12H,43H,56H,04H,01HCOUNTEQU$-ABCRESULTDW"DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:PUSHDSMOVA*,DATAMOVDS,A**ORA*,A*MOVC*,COUNTLEASI,ABCLEADI,RESULTAA:MOVBL,[SI]INCSICMPBL,80HJCNE*T1NEGBLNE*T1:ADDAL,BLADCAH,00HLOOPAAMOV[DI],A*MOVAH,4CHINT21HCODEENDSENDSTART〔1〕程序完成什么功能?〔2〕程序中NEGBL指令的作用是什么?〔3〕程序执行完毕后RESULT字单元的容是什么?〔4〕能否用MOVSI,OFFSETABC代替程序中LEASI,ABC指令?〔5〕汇编完毕后符号COUNT的值是什么?解:〔1〕程序完成求一组有符号字节数的绝对值之和。〔2〕程序中NEGBL指令的作用是求负数的绝对值。〔3〕程序执行完毕后RESULT字单元的容是0120H。〔4〕能。〔5〕汇编完毕后符号COUNT的值是06H。6.阅读以下程序,答复以下问题DSEGSEGMENTARRAYDB34H,56H,23H,70H,96HCOUNTEQU$-ARRAYDSEGENDSSSEGSEGMENTPARASTACK‘STACK’DB256DUP〔0〕SSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGSTART:MOVA*,DSEGMOVDS,A*MOVSI,OFFSETARRAYMOVC*,COUNTCLDNE*T:LODSBMOVBL,ALANDAL,0F0HPUSHC*MOVCL,4SHRAL,CLORAL,30HCALLDISPMOVAL,BLANDAL,0FHORAL,30HCALLDISPDECC*JC*ZDONEMOVAL,2CH;逗号的ASCII码为2CHCALLDISPJMPNE*TDONE:MOVAH,4CH;终止当前进程,返回调用进程INT21HDISPPROCNEARMOVAH,14;写字符到当前光标位置,光标前进一格INT10HRETDISPENDPCSEGENDSENDSTART〔1〕程序执行完毕后,屏幕上显示的容是什么?〔2〕程序中带下划线的指令可以用什么指令替代〔仅一条〕?〔3〕程序中空格处应填入什么指令,才能保证程序按要求正常执行?解:〔1〕程序执行完毕后,屏幕上显示的容是34,56,23,70,96。〔2〕程序中带下划线的指令可以用LEASI,ARRAY指令替代。〔3〕程序中空格处应填入POPC*指令,才能保证程序按要求正常执行。7.A*存放器中存有4位压缩BCD码,试编写程序将这4位数字分开,并分别存入BH、BL、CH和CL存放器中。解:参考程序段如下:……MOVD*,A*MOVCL,04HROLA*,CLANDD*,0F0FHMOVBL,DHMOVCL,DLANDA*,0F0FHMOVBH,ALMOVCH,AH……8.*、Y是字节型的无符号整数,编写程序计算。解:参考程序如下:DATASEGMENT*DB";运行程序时取*分别位于两个分支YDB"DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVA*,DATAMOVDS,A*MOVAL,*CMPAL,20JNCNE*TMOVCL,03HSHRAL,CLJMPNE*T1NE*T:SUBAL,15NE*T1:MOVY,ALMOVAH,4CHINT21HCODEENDSENDSTART9.编写程序,统计存放器B*中二进制位“1”解:参考程序如下:CODESEGMENTASSUMECS:CODESTART:MOVAL,00HMOVD*,B*MOVC*,16AA:CMPD*,0JZNE*TSHLD*,1JNCNE*T1INCALNE*T1:LOOPAANE*T:MOVAH,4CHINT21HCODEENDSENDSTART10.编写程序段将计算机日期设置为2009年10月1日。解:参考程序段如下:MOVC*,2009H;设置年MOVDH,10H;设置月MOVDL,01H;设置日MOVAH,2BHINT21HHLT11.编写程序实现接收一个字符的输入,并在屏幕上用二进制形式〔0/1〕显示出它的ASCII码值。解:参考程序如下:CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAH,01H;键盘输入 INT21H MOVBL,AL MOVC*,0007HSHLBL,1AA:SHLBL,1 JCNE*T1 MOVDL,’0 JMPNE*TNE*T1:MOVDL,’1NE*T:MOVAH,02H;显示输出7位ASCII码值 INT21H LOOPAA MOVAH,4CHINT21HCODEENDSENDSTART12.设数据块存放在BUFFER开场的50个字节单元中,试编写程序统计数据块中正数〔不包括0〕的个数,并将统计的结果存放到NUMBER单元中。解:参考程序如下:DATASEGMENTBUFFERDB23H,00H,56H,89H,09H,30HDB98H,11H,07H,…COUNTEQU$-BUFFERNUMBERDB00HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVA*,DATAMOVDS,A*MOVC*,COUNTLEASI,BUFFERAA:MOVAL,[SI]CMPAL,00HJZNE*TJSNE*TINCNUMBERNE*T:INCSILOOPAAMOVAH,4CHINT21HCODEENDSENDSTART13.存的一个区域中有100个字符是用小写字母表示的,试编写一个程序,把它们转换成大写字母,并送屏幕显示。解:参考程序如下:DATASEGMENTABCDB61H,65H,62H,63H,…;〔100个小写字母〕DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVA*,DATAMOVDS,A*MOVC*,0064HLEASI,ABCAA:MOVDL,[SI]SUBDL,20HMOV[SI],DLMOVAH,02HINT21HINCSILOOPAAMOVAH,4CHINT21HCODEENDSENDSTART14.“9876”是将输入数据字符“3268”通过密码表“解:参考程序如下:DATASEGMENTABCDB33H,35H,38H,39H,30HDB32H,37H,31H,36H,34HABC1DB4DUP(00H)ABC2DB00HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVA*,DATAMOVDS,A*LEASI,ABC1LEADI,ABC2MOVC*,0004HAA:MOVAH,01HINT21HMOV[SI],ALINCSILOOPAALEASI,ABC1MOVD*,0000HMOVC*,0004HAA0:LEAB*,ABCAA1:MOVAL,[SI]CMPAL,[B*]JZNE*TINCB*INCDLJMPAA1NE*T:PUSHC*CMPC*,01HJZNE*T1MOVCL,04HSHLD*,CLNE*T1:POPC*LOOPAA0MOV[DI],A*MOVAH,4CHINT21HCODEENDSENDSTART15.在STRING单元开场存放着一字符串,字符串以“$〞完毕,试编制一程序测试该字符串中是否有数字0~9,如有则将CL中的第5位置1,否则将该位清0。解:参考程序如下:DATASEGMENTABCDB‘ABCDS9KL$’DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVA*,DATAMOVDS,A*LEASI,ABCMOVCL,00HAA:MOVAL,[SI]CMPAL,’$’JZNE*T1CMPAL,30HJCNE*TCMPAL,3AHJNCNE*TORCL,20HJMPNE*T1NE*T:INCSIJMPAANE*T1:MOVAH,4CHINT21HCODEENDSENDSTART16.编写程序完成把D*中的16进制数转换为ASCII码,并将对应的ASCII码依次存入MEM开场的存储单元中。例如,当D*的容为2A49H时,程序执行完毕后,MEM单元开场的4个字节的容依次为39H,34H,41H,32H。解:DATASEGMENTMEMDB4DUP(")DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVA*,DATAMOVDS,A*MOVCH,04HMOVB*,OFFSETMEMMOVCL,04HAA1:MOVA*,D* ANDAL,0FH ADDAL,30H CMPAL,3AH JCNE*T ADDAL,07HNE*T:MOV[B*],AL INCB* RORD*,CL DECCH JNZAA1 MOVAH,4CH INT21HCODEENDSENDSTART17.现有一个以“$〞结尾的字符串,编写程序完成剔除字符串中的空格字符。解:参考程序如下:DATASEGMENTABCDB‘ABCDS9KL$’DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVA*,DATAMOVDS,A*LEASI,ABCMOVB*,SIAA:MOVAL,[SI]CMPAL,’$’JZNE*TCMPAL,20H;空格的ASCII码值为20HJZNE*T1MOVAL,[SI]MOV[B*],ALINCSIINCB*JMPAANE*T1:INCSIJMPAANE*T:MOVAH,4CHINT21HCODEENDSENDSTART18.编一程序,在STRING开头的数据区中查找WE字符串,数据区以$符作为完毕符号。如查到,给出HAVEFOUND提示;如查不到,给出NOTFOUND提示。解:参考程序如下:DATASEGMENTSTRINGDB‘ABCWE5$’REDB‘NOTFOUND$’RE1DB‘HAVEFOUND$’ DATAENDS CODESEGMENTASSUMECS:CODE,DS:DATA BEGIN:MOVA*,DATA MOVDS,A* LEASI,STRINGAA:MOVAL,[SI]CMPAL,’$’JZNE*T CMPAL,’W’ JNZNE*T1 INCSI MOVAL,[SI] CMPAL,’E’ JNZAA LEAD*,RE1 JMPNE*T2 NE*T1:INCSI JMPAA NE*T:LEAD*,RE NE*T2:MOVAH,09H INT21H MOVAH,4CH INT21H CODEENDS ENDBEGIN19.设在A、B和C单元中分别存放着三个数,假设三个数都不是0,则求出三数之和并存放在D单元中;假设三个数中有一个为0,则把其余两个单元也清0。试编写此程序。解:参考程序如下:DATASEGMENTADB"BDB"CDB";程序运行前修改A、B和C单元的容DDB"DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVA*,DATAMOVDS,A*MOVAL,ACMPAL,00HJZNE*TMOVAL,BCMPAL,00HJZNE*TMOVAL,CCMPAL,00HJZNE*TMOVAL,AADDAL,BADDAL,CMOVD,ALJMPNE*T1NE*T:MOVA,00H MOVB,00H MOVC,00HNE*T1:MOVAH,4CH INT21HCODEENDSENDSTART20.在以DA1为首地址的存中有50个无符号字节数,编写程序统计其中素数的个数,结果以十进制形式在屏幕上显示。要求分别用子程序完成素数个数统计及十进制数显示。解:分析:素数,又称质数,是这样的整数:它除了能表示为它自己和1的乘积以外,不能表示为任何其他两个整数的乘积。判断一个整数是否为素数的方法:用这个数除以2到它本身,如果只能被它本身整除则为素数。参考程序如下:DATASEGMENTttldb'Totalnumberofprimenumber(s):$'tendw10pcountdb0da1dB1,2,3,4,5,6,7,8,9,10dB11,12,13,14,15,16,17,18,19,20dB21,22,23,24,25,26,27,28,29,30dB31,32,33,34,35,36,37,38,39,40dB41,42,43,44,45,46,47,48,49,50DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAmain:mova*,datamovds,a*leasi,da1movdi,50;用di做主循环计数器cldm_1:lodsb;从ds:si取一个无符号整数到a*callisprimejncm_2incpcountcallprinta*;是素数则输出a*里的十进制数movdl,9;用制表符分隔callputcm_2:decdijnzm_1;50个数完成?movd*,offsetttl;输出素数总数callputsmoval,pcount;输出素数总数*orah,ahcallprinta*movah,4chint21hisprimeproccbwtesta*,1;是否为偶数jnzip_1;假设是偶数直接返回ip_0:clc;CF=0表示是合数retip_1:cmpa*,1;1或0"eip_0;不是素数cmpa*,3jeip_4;3是素数直接返回movc*,3;从3开场循环ip_2:movb*,a*;留个副本在b*里*ord*,d*;为除法去除d*divc*mova*,b*;恢复a*里的数ord*,d*;余数为0否jzip_0;为0为合数addc*,3;本来是除数加2,只尝试除数为奇数的情况即可,直接加3是为了比拟c*是否以及到了a*-1cmpc*,a*ip_3;假设c*高于或等于a*,说明除数已经尝试到了n-1,a*是素数,直接返回,否则继续到ip_3ip_4:stc;CF=1表示是素数retip_3:decc*;c*-1才是真正下个要尝试的除数jmpip_2;继续试isprimeendpputsprocmovah,9int21hretputsendpputcprocmovah,2int21hretputcendpprinta*proc*ord*,d*divtenmovc*,a*orc*,d*;假设商与余数都为0则完毕递归jzp_1pushd*;留存D*中的余数以在递归后输出callprinta*;递归popd*;从最高位开场恢复余数adddl,'0';原来的输出语句add一下就好了callputcp_1:retprinta*endpCODEENDSendmain第五章1.选择题〔1〕关掉工作电源后,其中存储的数据立即丧失的存储器是。A.硬盘B.ROMC.光盘D.RAM〔2〕下面说确的是。A.EPROM是不能改写的存储器B.EPROM是可以改写的,因此它也是一种随机存取存储器C.EPROM只能改写一次D.EPROM可以改写,但它不是随机存取存储器〔3〕*DRAM芯片有8条地址线,因些可以推断其存储容量不超过。A.512个存储单元B.65536个存储单元C.8192个存储单元D.256个存储单元〔4〕对于地址总线为20位的微处理器来说,其直接寻址的围可达。A.16MBB.1MBC.64MBD.1GB〔5〕在研制*一计算机应用系统的过程中,存储其监控程序可选用。A.RAMB.EPROMC.PROMD.ROM〔6〕以下四条表达中,正确的一条是。A.硬盘和光盘都属于外存储器B.计算机的外存比存存取速度快C.虚拟存储器属外存储器D.计算机系统中的任何存储器在断电情况下,所存信息都不会丧失〔7〕常用的虚拟存储器寻址系统由两级存储器组成。A.Cache-外存B.Cache-CacheC.Cache-主存D.主存-外存〔8〕以下关于外存、存以及Cache的不正确的说法是。A.存通常由RAM、ROM芯片组成B.Cache可以在CPU部或外部C.Cache只占用局部存空间D.外存的信息必须调入存才能被CPU执行〔9〕虚拟存储器由实现。A.硬件和用户编程B.硬件和操作系统C.ROM-BIOSD.用户编程和操作系统〔10〕不能与CPU总线直接相连的存储器是。A.存储器B.ROMC.硬盘D.RAM解:参考答案:题号题号〔1〕〔2〕〔3〕〔4〕〔5〕答案DDBBB题号〔6〕〔7〕〔8〕〔9〕〔10〕答案ADBBC2.简答题〔1〕简述SRAM芯片与DRAM芯片的共同点与不同点。答:SRAM与DRAM的共同点:都属于随机存取存储器,具有易失性。SRAM与DRAM的不同点:SRAM利用双稳态触发器电路保存信息,集成度比DRAM低,功耗比DRAM大;DRAM利用MOS管栅极和源极之间的极间电容C保存信息,需要刷新电路保证信息较长时间保存。〔2〕表达ROM芯片的常见分类,各种ROM芯片的特点及其适用场合。答:ROM的常用分类、特点及应用场合:①掩膜ROM:生产完成的芯片已保存了信息,保存的信息无法修改,适用于大批量的定型产品中。②PROM:PROM可以一次写入信息,一旦写入无法更改,适用于小批量的定型产品中。③EPROM:紫外线擦除可屡次编程的存储器,适用于新产品的开发。④EEPROM:电擦除可屡次编程的存储器,适用于需要在线修改的场合。〔3〕主存储器的地址译码方式有哪几种?各有什么特点?答:主存储器的地址译码方式分为全部译码与局部译码。全部译码:把剩余的高位地址线全部作为译码器的输入,用译码器输出来作为片选信号的方法就是全部译码。采用全译码时各芯片〔组〕的地址围是唯一的,即每个存储单元的地址唯一,没有地址重叠,地址空间可以得到充分利用。局部译码:用剩余高位地址线的一局部作为译码器的输入,用译码器的输出来作为片选信号的方法就是局部译码。采用局部译码时,存储器单元的地址不唯一,存在地址重叠。没有参加译码的地址线越多,地址重叠就越严重。〔4〕利用4片6116〔2K×8位〕芯片设计存储器系统时,采用全译码法并且保证存储器地址的连续,假设起始地址为60000H,则存储器系统的最后一个单元地址是什么?答:存储器系统的最后一个单元地址是61FFFH。〔5〕*微机系统中ROM区有首地址为90000H,末地址为FFFFFH,求其ROM区域的存储容量。答:其ROM区域的存储容量为448K。〔6〕对于以下芯片,它们的片地址线各有多少根?假设分别用以下芯片组成容量为64KB的模块,请指出分别需要多少片芯片?①Intel2114〔1K×4位的SRAM〕②Intel6116〔2K×8位的SRAM〕③Intel2764〔8K×8位的EPROM〕答:①Intel2114的片地址线为10根,组成容量为64KB的存储器模块需要128片。②Intel6116的片地址线为11根,组成容量为64KB的存储器模块需要32片。③Intel2764的片地址线为13根,组成容量为64KB的存储器模块需要8片。〔7〕简述高速缓冲存储器Cache的根本工作原理以及它与主存的关系。答:在*一时间间隔,CPU对局部围的存储器访问较频繁,而对其它地址的访问较少。使用高性能的SRAM芯片组成容量较小的Cache,存放当前常用的代码,保证CPU读取Cache中数据的命中率较高,缩短相应的存取时间。〔8〕采用虚拟存储技术能解决什么问题?虚拟存储器的管理方式有哪几种?答:使用虚拟存储器可以保证计算机在不提高本钱的前提下,提高有效的存储空间。虚拟存储器的管理方式有:段式、页式、段页式。3.设计题〔1〕在8088CPU的系统中扩展32K字节的RAM,其扩大存储空间的起始地址为80000H。设系统的地址总线为A19~A0,数据总线为D7~D0,存储器芯片选用6264。采用74LS138译码器设计译码电路,画出扩展的存储器系统的连线图。D0D0~D7MEMWMEMRA0~A12A19A18A17A16A15A14A13R/WD0~D762641*OEA0~A12R/WD0~D762642*OEA0~A12G1G2AG2B74LS138CBAY0Y1CSCSA0~A12D0~D7R/WD0~D762643*OEA0~A12R/WD0~D762644*OEA0~A12CSCSY2Y3图5.7习题3〔1〕连接根据要求存储器系统的连接如图5.7所示。〔2〕*微机系统的CPU为8088,且工作于最小方式,原有系统RAM存储器模块的容量为128KB,其首地址为40000H,现用6264RAM芯片〔8K×8位〕扩展一个容量为16KB的存储器模块,地址紧接原有RAM模块,试完成该扩展RAM模块设计〔可选用译码器、与门、或门及非门等〕。A1A12~A0D7~D0A13A14A15M/IOA16A17A18Y1Y7Y0…74LS138G2BG2AG1CBA图5.8习题3〔2〕连接A19Y2Y36264(1)D7~D0A12~A0CSOEWE6264(2)D7~D0A12~A0CSOEWEMEMRMEMW8088系统总线第六章填空题〔1〕I/O数据缓冲器主要用于协调CPU与外部设备在速度上的差异。〔2〕一般I/O接口的编址方式可以分成存储器映像方式和I/O映像方式两种。〔3〕在微机系统中使用地址来区分不同的外部设备。〔4〕CPU与I/O设备之间的数据传送方式有无条件传送方式、程序查询传送方式、中断控制方式和DMA方式。〔5〕一片Intel8255A一般占用4个端口地址。〔6〕Intel8255A的端口C的按位置位/复位功能的控制字写入控制存放器端口。〔7〕Intel8255A工作在方式0时,端口A、B和C的输入/输出可以有16种组合。〔8〕在DMA传送过程中完成数据传送功能是由DMA控制器硬件直接控制。〔9〕在DMA方式下,DMA控制器控制总线。〔10〕在DMA数据传送方式中,实现地址的修改与传送字节数计数的主要功能部件是DMA控制器。画出程序查询数据传送方式的流程图。读取状态信息准备就绪吗?读取状态信息准备就绪吗?否是传送数据图6.6查询方式程序流程3.假设*一计算机系统中有一片Intel8255A接口芯片,初始化时将它的A口、B口均设置成方式1输出,请写出这时Intel8255A与外设的联络信号名称与信号方向。答:A口设置成方式1输出时的联络信号有::输出缓冲器缓信号,8255A输出给外设;:应答信号,外设给8255A;INTRA:中断请求信号,8255A输出给CPU。B口设置成方式1输出时的联络信号有::输出缓冲器缓信号,8255A输出给外设;:应答信号,外设给8255A;INTRB:中断请求信号,8255A输出给CPU。4.假设Intel8255A的A口地址为300H,B口地址为301H,C口地址为302H,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论