《微型计算机系统原理及应用》疑问解答_第1页
《微型计算机系统原理及应用》疑问解答_第2页
《微型计算机系统原理及应用》疑问解答_第3页
《微型计算机系统原理及应用》疑问解答_第4页
免费预览已结束,剩余69页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《微型计算机系统原理及应用》.《微型计算机系统原理及应用》是ー门什么性质的课程?本课程是计算机科学与技术专业的专业基础课,是该专业学生学习和掌握计算机硬件知识的入门课程。同时,本课程又是ー门面向应用的、具有很强的实践性与综合性的课程,其目的是让学生通过本课程的学习,对微型计算机工作原理有全面的了解,能使用汇编语言进行简单的程序设计,并能正确选择和使用微型计算机及其外设与接口,使学生获得在专业领域内应用微型计算机的初步能力。.学习《微型计算机系统原理及应用》的重要性在哪里?本课程主要讲述微机原理与汇编语言,这是学习和掌握计算机技术的重要内容。本课程的前修课程为"数字逻辑”,同时,又是"微机接口技术"、"操作系统"ヽ"计算机体系结构〃等课程的必要先修课。由于本课程在计算机专业必修课中的位置,更体现了它的重要性。读者通过本课程的学习,可深入了解微型计算机系统的组成、工作原理,掌握汇编语言程序设计技术,为微型计算机技术的应用打下良好的硬件基础。.如何学好《微型计算机系统原理及应用》这门课程?首先在心理上要克服怕电路怕硬件的想法,其次对于电路分析,掌握好每个电路的时序,片选的译码电路,以及控制信号和状态信号的连接方法,再者就是接口编程,注意各个芯片的命令,状态格式的定义,什么时候同时序相配合等等。只要同学们多看例子,多做题目,多多上机实验,是一定会学好这门课程的。.学习《微型计算机系统原理及应用》的总体要求是什么?(1)掌握微型计算机的基本组成原理;(2)掌握微机中各种进制数的表示方法及编码方法:(3)掌握基本逻辑门电路及触发器、寄存器、译码器、锁存器的基本工作原理;(4)能使用汇编语言进行简单的程序设计;(5)能掌握存储器的工作原理及简单应用;(6)能正确的分析各种接口电路的工作原理,并能根据具体用途选择不同的接口。常见疑问第一章.计算机分哪几类?各有什么特点?传统上分为三类;大型主机、小型机、微型机。大型主机一般为高性能的并行处理系统,存储容量大,事物处理能力强,可为众多用户提供服务。小型机具有一定的数据处理能力,提供一定用户规模的信息服务,作为部门的信息服务中心。微型机一般指在办公室或家庭的桌面或可移动的计算系统,体积小、价格低、具有工业化标准体系结构,兼容性好。.简述微处理器、微型计算机及微型计算机系统三者之间有什么不同?微处理器一般也称为CPU,它本身具有运算能力和控制功能。微处理器是微处理器的核心。微型计算机是由CPU、存储器、输入/输出接口电路和系统总线构成的裸机系统。微型计算机系统是以微型计算机为主机,配上系统软件和外设之后而构成的计算机系统。三者之间是有很大不同的,微处理器是微型计算机的组成部分,而微型计算机又是微型计算机系统的组成部分。.80X86微处理器有几代?各代的名称是什么?从体系结构上可分为3代:8080/8085:8位机。8086/8088/80286:16位机。80386/80486:32位机。.CPU在内部结构上由那几部分组成?CPU应具备那些主要功能?CPU在内部结构上由算术逻辑部件(ALU);累加器和通用寄存器组:程序计数(指令指针)、指令寄存器和译码器;时序和控制部件几部分组成。不同CPU的性能指标一般不相同,但一般CPU应具有下列功能:可以进行算术和逻辑运算;可保存少量数据;能对指令进行译码并执行规定的动作;能和存储器、外设交换数据;提供整个系统所需要的定时和控制;可以响应其它部件发来的中断请求。.累加器和其他通用寄存器相比有何不同?累加器是比较特殊的通用寄存器。它在某些指令执行前,它可以保存一源操作数,还在执行后又用来保存运算结果,另外它一般也用来完成输入/输出指令。而通用寄存器则一般只用来保存参加运算的数据、运算的中间的结果以及用来保存地址。.微处理器的控制信号有那两类?微处理器的控制信号分为两类:ー类是通过对指令的译码,由CPU内部产生的,这些信号由CPU送到存储器、输入/输出接口电路和其它部件;另ー类是微型计算机系统的其它部件送到CPU的,通常用来向CPU发出请求,如中断请求、总线请求等。.8088是多少位的微处理器?为什么?8086是16位的微处理器,其内部数据通路为16位,但是数据总线是8位。.EU与BIU各自的功能是什么?如何协同工作?EU是执行部件,主要的功能是执行指令。BIU是总线接口部件,与片外存储器及I/O接口电路传输数据。EU经过BIU进行片外操作数的访问,BIU为EU提供将要执行的指令。EU与BIU可分别独立工作,当EU不需BIU提供服务时,BIU可进行填充指令队列的操作。.8086/8088与其前一代微处理器8085相比,内部操作有什么改进?8085为8位机,在执行指令过程中,取指令与执行执令都是串行的。8086/8088由于内部有EU和BIU两个功能部件,可重叠操作,提高了处理器的性能。.8086/8088微处理器内部有那些寄存器,它们的主要作用是什么?执行部件有8个16位寄存器,AX、BX、CX、DX、SP、BP、DI、SEAX、BX、CX,DX一般作为通用数据寄存器。SP为堆栈指针存器,BP、DI、SI在间接寻址时作为地址寄存器或变址寄存器。总线接口部件设有段寄存器CS、DS、SS、ES和指令指针寄存器IP。段寄存器存放段地址,与偏移地址共同形成存储器的物理地址。IP的内容为下一条将要执行指令的偏移地址,与CS共同形成下一条指令的物理地址。.8088对存储器的管理为什么采用分段的办法?8088是一个!6位的结构,采用分段管理办法可形成超过16位的存储器物理地址,扩大对存储器的寻址范围(1MB,20位地址)。若不用分段方法,16位地址只能寻址64KB空间。.在8088中,逻辑地址、偏移地址、物理地址分别指的是什么?逻辑地址是在程序中对存储器地址的ー种表示方法,由段地址和段内偏移地址两部分组成,如1234H:0088Ho偏移地址是指段内某个存储单元相对该段首地址的差值,是ー个16位的二进制代码。物理地址是8088芯片引线送出的20位地址码,用来指出ー个特定的存储单元。.给定一个存放数据的内存单元的偏移地址是20C0H,(DS)=0C00EH,求出该内存单元的物理地址。物理地址:320F8H。.画出8086CPU各寄存器图,并声明每个寄存器的作用。8086CPU各寄存器图如图:1.四个通用寄存器:AX,BX,CX,DX既可以作16位寄存器使用,也可以作8位寄存器使用。2.四个专用寄存器中:BP用作基数指针寄存器,SP用作堆栈指针寄存器,SI用作源变址寄存器,DI用作目的变址寄存器。3.四个段地址寄存器中:CS为16位的代码段地址寄存器,DS为!6位的数据段地址寄存器,ES为16位的扩展段地址寄存器,SS为16位的堆栈段地址寄存器。4.IP为16位的指令指针寄存器。5.标志寄存器共有16位,其中7位未用,所用的各位的含义如下:(1)标志有6个,即SF、ZF、PF、CF、AF、和OP。符号标志SF:与运算结果的最高位相同。零标志ZF:若结果为零则为1,若结果非零则为〇。奇/偶标志PF:若运算结果的低8位有1的个数为偶数,则PF为1,否则为〇。进位标志CF:若运算中有进位或有借位时,则为1。另外循环指令也会影响该位。辅助进位标志AF:当加法运算时,如果第三位往第四位有进位或者当减法时,如果第三位从第四位有借位,则AF为1。另外,辅助进位标志一般在BCD码运算中作为是否进行十进制调整的判断依据。溢出标志OF:当运算过程中产生溢出时,会使OF为1。(2)标志有3个,即DF、IF,TFo方向标志DF:这是控制串操作指令用的标志。如果DF为〇,则串操作过程中地址会不断增加;反之,如果DF为1,则串操作过程中地址会不断减少。中断标志IF:这是控制可屏蔽中断的标志.如果IF为〇,则CPU不能对可屏蔽中断请求作出响应;如果IF为I,则CPU可以接受可屏蔽中断请求.跟踪标志TF:如果TF为1,则CPU按跟随方式执行指令..什么叫BCD码?8086汇编语言在对BCD码进行加、减、乘、除运算时,采用什么方法?在计算机中,可用4位二进制码表示一个十进制码,这种代码叫BCD码。计算机对BCD码进行加、减、乘、除运算,通常采用两种办法:ー种是在指令系统中设置ー套转专用于BCD码的指令;另ー种方法是利用对普通二进制数的运算指令算出结果,然后用专门的指令对结果进行调整,或者反过来,先对数据进行调整,再用二进制数指令进行运算。.用普通运算指令执行BCD码运算时,为什么要进行十进制调整?具体讲,在进行BCD码的加、减、乘、除运算时,程序段的什么位置必须加上十进制调整指令?在BCD码中,只允许〇>9这10个数字出现,但有时候的运算结果会超过此范围,因此要进行十进制调整。进行加、件或乘法运算时,调整指令必须紧跟在算术指令后面,在进行除法运算时,调整指令放在除法指令之前。第二章.假设(CS)=3000H,(DS)=4000H,(ES)=2000H,(SS)=5000H,(AX)=2060H,(BX)=3000H,(CX)=5,(DX)=O,(SI)=2060H,(DI)=3000H,(43000H)=0A006H,(23000H)=0B116H,(33000H)=0F802H,(25060)=OOBOH,.(SP)=OFFFEH,(CF)=1,(DF)=1,请写出下列各条指令单独执行完后,有关寄存器及存储单元的内容,若影响条件码请给出条件码SF、ZF、OF、CF的值。(1)SBBAX,BX(2)CMPAX,WORDPTR[SI+OFAOH](3)MULBYTEPTR[BX](4)AAM(5)DIVBH(6)SARAX,CL(7)XORAX,0FFE7H(8)REPSTOSB(9)JMPWORDPYR[BX](10)XCHGAX,ES:[BX+SI]解答:(AX)=0F05FH,(SF)=1,(ZF)=O,(0F)=0,(CF)=1(SF)=1,(ZF)=O,(0F)=l,(CF)=1(AX)=0240H,(0F)=l,(CF)=1(AX)=0906H,(SF)=O,(ZF)=O(AX)=20ACH(AX)=0103H,(CF)=0(AX)=0DF87H,(CF)=O,(OF)=0,(SF)=1,(ZF)=O(23000H厂(23004H)=60H,不影响标志位(IP)=0A006H,不影响标志位(AX)=00B0H,(25060)=2060H,不影响标志位.8086系统中,当对SS和SP寄存器的值进行修改时,有什么特殊规定?这样做的原因是什么?凡是遇到给SS寄存器赋值的传送指令时,系统会自动禁止外部中断,等到本条指令和下条指令执行之后,又自动恢复对SS寄存器赋值前的中断开放情况。这样做是为了允许程序员连续用两条指令分别对SS和SP寄存器赋值,同时又防止堆栈空间变动过程中出现中断。.用乘法指令时,特别要注意先判断用有符号数乘法指令还是用无符号数乘法指令,这是为什么?用乘法指令时,特别要注意先判断用有符号数乘法指令还是用无符号数乘法指令,是因为在执行乘法运算时,要想使无符号数相乘得到正确的结果,有符号数相乘时,就得不到正确的结果;要想使有符号数相乘得到正确的结果,无符号数相乘时,就得不到正确的结果。.字节扩展指令和字扩展指令用在什么场合?举例说明。遇到两个字节相除时,要预先执行CBW指令,以便产生一个双倍长度的被除数。否则就不能正确的执行除法操作。CWD同理。例如:CBWMOVAL,a;CWDMOVAX,X;MOVCL,b;MOVCX,Y;CBWAL;CWDAX;DIVAX,CL;DIVAX,CX;.普通移位指令(带CF的和不带CF的两类)在执行操作时,有什么差别?在编制乘法程序时,为什么常用移位指令来代替乘除法指令?试编写ー个程序段,实现将BX中的数除以10,结果仍放在BX中。解答:带CF和不带CF的普通移位指令的差异:前者用于算术运算,后者用于逻辑运算。程序段:MOVCL,OAHMOVAX,BXIDIVCLMOVBX,AX.串操作指令使用时特别要注意和SI.D!这两个寄存器及方向标志DF密切相关。请具体就指令MOVSB/MOVSW、CMPSB/CMPSW,SCASB/SCASW.LODSB/LODSW.STOSB/STOSW列表说明和SI、DI及DF的关系。SIDIDFMOVSB/MOVSW指出源地址指出目的地址不带REP重复前缀时,DF=O,每传送一次,SI、DI加I或加2,DF=I,SI、DI则减I或减2CMPSB/CMPSW存放源字符串首地址存放目的字符串首地址DF=O,每次比较后,SI、DI加I或加2,CX减I,DF=I,SI、DI减I或减2,CX减1SCASB/SCASW无指出字符串首址偏移量无LODSB/LODSW作为地址指针存放处理结果DF=I时,地址作增量修改,DF=O时,地址作减量修改STOSB/STOSW无存放目的地址无.用串操作指令设计实现以下功能的程序段:首先将100H个数从2170H处搬到1000H处,然后,从中检索相等于AL中字符的单元,并将此单元值换成空格符。解答:BUFFIEQU,1000HBUFF2EQU,2170HSTART:MOVSI,OFFSETBUFF2LEADI,BUFFIMOVCX,100HCYCLE:MOVAL,[SI]MOV[DI],ALINCSIINCDILOOPCYCLEANOTHER:MOVDI,OFFSETBUFFIMOVCX,100CLDAGE:SCASBDECCXJZFINJNZAGEJMPOVERFIN:MOV[DI],20HCMPCX,0JNZAGEOVER:RET.在使用条件转移指令时,特别要注意它们均为相对转移指令,请解释“相对转移”的含义。如果要往较远的地方进行条件转移,那么,程序中应该怎样设置?只能在从本指令为中心的T28到+127字节范围内转移的称为相对转移。如果要往较远的地方进行条件转移时,可以先用条件转移指令转到附近一个单元,然后,从此单元起放一条无条件转移指令,再通过这条无条件转移指令转到较远的目的地址。.带参数的返回指令用在什么场合?设栈顶地址为3000H,当执行RET0006后,SP的值为多少?带参数的返回指令可用在这样的情况:主程序为某个子程序提供一定的参数或者参数地址先送到堆栈中,通过堆栈传递给子程序。当栈顶指针SP=3000H,执行RET0006时,弹出3000H和3001H处的返回地址,腾出3002H?/F0NT>3007H的空间,所以SP=3008H。30,用循环控制指令设计程序段,从60H个元素中寻找一个最大值,结果放在AL中。解答:MOVSI,OFFSETDATA1J将数据起始地址送SIMOVCX,5FH;有60H-!次循环MOVAL,[SI]!将第一个元素放AL中COMPARE:INCSICMPAL,[SI]JLXCHMAXJMPNEXTXCHMAX:MOVAL,[SI]NEXT:LOOPCOMPARE.中断指令执行时,堆栈的内容有什么变化?中断处理子程序的人口地址是怎样得到的?中断指令执行时,堆栈内容变化如下:标志寄存器被推入堆栈,且SP减2,然后CPU将主程序的下一条指令地址即断点地址的段值和偏移量推入堆栈,且SP减4。某中断处理子程序的入口地址即中断向量,由该中断类型号的4倍为内存地址,在该地址处的4个字节内容即该中断向量。.中断返回指令IRET和普通子程序返回指令RET在执行时,具体操作内容什么不同?IRET须弹出堆栈中标志寄存器的值,而RET则不需要。.断点中断是指怎样ー种中断?在程序调试中有什么作用?断点中断指令有什么特点?设置断点过程对应了一种什么操作?这种操作会产生什么运行结果?断点中断即中断类型3,一般该中断处理程序进行程序调试,主要功能是显示ー些寄存器的值,并给出ー些重要的信息。在程序调试中,断点中断就是从ー个较长的程序中分离出ー个较短的存在问题的程序段。断点中断的特点是指令占一个字节。设置断点过程对应int3替换那条指令,在中断处理程序中再恢复该被替换的指令,并修改堆栈中的断点地址为中断处的地址而不是下一条指令地址。这种操作使断点中断不会影响程序的功能。.HLT指令用在什么场合?如CPU在执行HLT指令时遇到硬件中断并返回后,以下应执行哪条指令?HLT用在使CPU处于暂停状态而等待硬件中断的场合。在执行HLT指令遇到硬件中断并返回后将执行HLT后面的一条指令。.总线封锁指令用在什么场合?以飞机定票系统为例说明总线封锁指令的作用(设飞机定票系统为ー个多处理器系统,每个处理器都是平等的)。总线封锁指令用在多个处理器争用同一资源或设备的场合。在飞机票系统中,当ー个处理器受理业务时,便用LOCK封锁总线,使其它处理器不能访问总线,避免引起冲突。.设当前SS=2010H,SP=FEOOH,BX=3457H,计算当前栈顶的地址为多少?当执行PUSHBX指令后,栈顶地址和栈顶2个字节的内容分别是什么?当前栈顶的地址201OH*16+FE00H=2FF00H:执行PUSHBX指令后,堆栈地址指针SP减2,则栈顶地址为2FEEDH;栈顶2个字节的内容为57H、34H。.在DS段中有一个从TABLE开始的由160个字符组成的链表,设计ー个程序,实现对此表进行搜索,找到第一个非〇元素后,将此单元和下ー单元清〇。解答:MOVCX,SEGTABLEMOVDS,CX;将段地址送DSMOVSI,OFFSETTABLE;表偏移量送SIMOVCX,160;字节数XORAL,ALNEXT:CMPAL,[SI]JNEEXIT1INCSILOOPNEXTEXIT1:MOV[SI],ALINCSIMOV[SI],AL.下面的程序段将ASCII码的空格字符填满100个字节的字符表。阅读这ー程序,画出流程,并说明使用CLD指令和REPST0SB指令的作用,再指出REPSTOSB指令执行时和那几个寄存器的设置有关?MOVCX,SEGTABLE;TABLE为字节表表头MOVES,CXMOVDI,OFFSETTABLE;DI指向字节表MOVAL,''MOVCX,64H:字节数CALLFILLM;调用数子程序FILLM:JCXZEXIT;CX为〇则退出PUSHDI;保存寄存器PUSHCXCLDREPSTOSB:方向标志清零POPCX;重复填数POPDIEXIT:RETeLD指令作用:方向标志清〇;REPSTOSB指令作用:重复ex次将AL中的字节填入[ES:DI]为起始的表内,DI增量、减量根据DF确定:DF=O,DI每次增量;DF=1,DI每次减量。STOSB指令执时,与AX、ES、DI寄存器和Flag的DF位设置有关。流程图如上。第三章.试编写ー个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。abc:movah,1int21hcmpal,'a'jbstopcmpal,'z'jastopsubal,20hmovdl,almovah,2int21hjmpabcstop:ret.编写程序,比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示“MATCH”,若不同则显示“NOMATCH”。datareasegmentstringldb'asfioa'string2db'xcviyoaf'messldb'MATCH','$'mess2db'NOMATCH'datareaendsprognamsegmentmainprocfarassumecs:prognam,ds:datareastart:pushdssubax,axpushaxmovax,datareamovds,axmoves,axbegin:movex,string2-stringlmovbx,messl-string2cmpbx,exjnzdispnoleadx,addrleasi,stringlleadi,string2repecmpsbjnedispnomovah,9leadx,messlint21hretdispno:movah,9leadx,mess2int21hretmainendpprognamendsendstart.试编写程序,要求从键盘输入3个16进制数,并根据对3个数的比较显示如下信息:(1)如果3个数都不相等则显示〇;(2)如果3个数中有2个数相等则显示2;(3)如果3个数都相等则显示3。datasegmentarraydw3dup(?)dataendscodesegmentmainprocfarassumecs:code,ds:datastart:pushdssubax,axpushaxmovax,datamovds,axmovex,3leasi,arraybegin:pushexmovcl,4movdi,4movdl,''movah,02int21hmovdx,0input:

movah,01int21handal,Ofhshldx,clordl,aldecdijneinputmov[si],dxaddsi,2popexloopbegincomp:leasi,arraymovdl,0movax,[si]movbx,[si+2]empax,bxjnenext1adddl,2nextl:emp[si+4],axjnenext2adddx,2next2:emp[si+4],bxjnenumadddl,2num:empdx,3jldispmovdl,3disp:movah,2adddl,30hint21hretmainendpcodeendsendstart42.已知整数变量A和B,试编写完成下述操作的程序:(1)若两个数中有一个是奇数,则将该奇数存入A中,偶数存入B中:(2)若两个数均为奇数,则两数分别加1,并存回原变量;(3)若两个数均为偶数,则两变量不变。dsegsegmentadw?bdw?dsegendscsegsegmentmainprocfarassumecs:cseg,ds:dsegstart:pushdssubax,axpushaxmovax,dsegmovds,axbegin:movax,amovbx,bxorax,bxtestax,0001jzclasstestbx,0001jzexitxchgbx,amovb,bxjmpexitclass:testbx,0001jzexitincbincaexit:retmainendpcsegendsendstart43.把〇、10010之间的30个数,存入首地址为GRAD的字数组中,GRAD+i表示学号为i+1的学生成绩。另ー个数组RANK是30个学生的名次表,其中RANK+!的内容是学号为i+1的学生的名次。试编写程序,根据GRAD中的学生成绩,将排列的名次填入RANK数组中(提示:•个学生的名次等于成绩高于这个学生的人数加1)。dsegsegmentgradedw30dup(?)rankdw30dup(?)dsegendscsegsegmentmainprocfarassumecs:cseg,ds:dseg,es:dsegstart:pushdssubax,axpushaxmovax,dsegmovds,axmoves,axbegin:movdi,0movex,30loopl:pushexmovex,30movsi,0movax,grade[di]movdx,0loop2:empgrade[si],axjbego_onincdxgoon:addsi,2looploop2popexincdxmovrank[di],dxsdddi,2looplooplretmainendpcsegendsendstart44.分析下列程序的功能,写出堆栈最满时各单元的地址及内容。SSEGSEGMENT4STACK*AT1000H;堆栈的段地址为!000HDW128DUP(?)TOSLABELWORDSSEGENDSDSEGSEGMENTDW32DUP(?)DSEGENDSCSEGSEGMENTMAINPROCFARASSUMECS:CSEG,DS:DSEG,SS:SSEGSTART:MOVAX,SSEGMOVSS,AXMOVAX,DSEGMOVDS,AXMOVAX,4321HCALLHTOARETN:MOVAH,4CHINT21HMAINENDPHTOAPROCNEARCMPAX,15JLEBlPUSHAXPUSHBPMOVBP,SPMOVBX,[BP+2]ANDBX,OFIIMOV[BP+2],BXPOPBPMOVCL,4SHRAX,CLCALLHTOAPOPAXADDAL,30HJLPRTADDAL,07PRT:MOVDL,ALMOVAH,2INT21HRETHTOAENDPCSEGENDSENDSTART答案;1000:0F2HBl1000:0F4H31000:0F6HBl1000:0F8H21000:0FAHBl1000:0FCH11000:0FEHRETN1000:1OOH45.写出分配给下列中断类型号在中断向量表中的物理地址。(1)INT12H(2)INT8(1)00048h(2)00020h.试编写程序,它轮流测试两个设备的状态寄存器,只要一个状态寄存器的第〇位为1,则与其相应的设条就输入ー个字符;如果其中任一状态寄存器的第3位为!,则整个输入过程结束。两个状态寄存器的端口地址分别是0024和0036,ワ其相应的数据输入寄存器的端口则为0026和0038,输入字符分别存入首地址为BUFF1和BUFF2的存储区中。movsi,0movdi,0testl2:inal,0024htestal,08jnzexitinal,0036htestal,08jnzexitdevl:inal,0024htestal,01jzdev2inal,0026hmovbuffer[si],alincsidev2:inal,0036htestal,01jztestl2inal,0038hmovbuff2[di],alincdijmptestl2exit:ret.给定(SP)=0100,(SS)=0300,(FLAGS)=0240,存储单元的内容为(〇0020)=0040,(00022)=0100,在段地址为0900及偏移地址为00A0的单元中有一条中断指令INT8,试问执行INT8指令后,SP,SS,IP,FLAGS的内容是什么?栈顶的三个字是什么?(SP)=OOFA(SS)=0300(IP)=0040(FLAGS)=0040堆栈内容:00A1H0900H0240H.编写ー个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。加密表为;输入数字:〇,1,2,3,4,5,6,7,8,9密码数字:7,5,9,1,3,6,8,0,2,4scodedb7,5,9,1,3,6,8,0,2,4bufferdb10dup(?)movsi,0movex,10leabx,scodeinput:movah,01int21hempal,Oahjzexitandal,Ofhxlatmovbuffer[si],alincsiloopinputexit:ret.根据下列要求编写ー个汇编语言程序::(1)代码段的段名为COD-SG(2)数据段的段名为DAT_SG(3)堆栈段的段名为STK_SG(4)变量HIGH_DAT所包含的数据为95(5)将变量HIGH.DAT装入寄存器AH,BH和DL(6)程序运行的入口地址为STARTDAT_SGSEGEMNTH1GH_DATDB95DAT_SGENDSSTK_SGSEGMENTDW64DUP(?)STK_SGENDSCOD_SGSEGMENTMAINPROCFARASSUMECS:COD_SG,DS:DAT_SG,SS:STK_SGSTART:MOVAX,DAT-SGMOVDS,AXMOVAH,HIGH_DATMOVBH,AHMOVDL,AHMOVAH,4CHINT21HMAINENDPCOD_SGENDSENDSTART.指出下列程序中的错误:STAKSGSEGMENTDB100DUP(?)STA_SGENDSDTSEGSEGMENTDATA1DB?DTSEGENDCDSEGSEGMENTMAINPROCFARSTART:MOVDS,DATSEGMOVAL,34HADDAL,4FHMOVDATA,ALSTARTENDPCDSEGENDSEND改正后:STAKSGSEGMENTDB100DUP(?)STAKSGENDSDTSEGSEGMENTDATA1DB?DTSEGENDSCDSEGSEGMENTMAINPROCFARASSUMECS:CDSEG,DS:DTSEG,SS:STAKSGSTART:MOVAX,DTSEGMOVDS,AXMOVAL,34HADDAL,4FHMOVDATA1,ALMOVAH,4CHINT21HMAINENDPCDSEGENDSENDS.将下列文件类型填入空格:.obj(2).exe(3).erf(4).asm(5).1st(6).map编辑程序输出的文件有;汇编程序输出的文件有;连接程序输出的文件有«编辑程序输出文件:(4)汇编程序输出文件:(1),(3),(5)连接程序输出文件:(2),(6)52,下列标号为什么是非法的?(1)GET.DATA(2)1_NUM(3)TEST-DATA(4)RET(5)NEWITEM非法标号:(1)因为只允许是标号的第一个字符(2)第一个字符不能为数字(3)不允许出现(4)不能是保留字,如助记符(5)不能有空格.下面的数据项定义了多少个字节?DATA_1DB6DUP(4DUP(OFFH))24字节.对于下面两个数据段,偏移地址为10H和11H的两个字节中的数据是ー样的吗?为什么?DTSEGSEGMENTDTSEGSEGMENTORG10HIORG10HDATA1DB72H|DATA1DW7204HDB04HDTSEGENDSDTSEGENDS不一样.分别是72H,04H和04H,72H,存储字时低8位存在低字节,高8位存在髙字节..下面的数据项设置了多少个字节?(1)ASC_DATADB*1234*(2)HEX.DATADB1234H(1)设置了4个字节(2)设置了2个字节.执行下列指令后,AX寄存器中的内容是什么?TABLEDW10,20,30,40,50ENTRYDW3MOVBX,OFFSETTABLEADDBX,ENTRYMOVAX,[BX]答案:(AX)=40.指出下列指令的错误: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不能作为基址寄存器使用,而且源、目的不能同时为存贮器寻址方式1000超出一个字节的表数范围OFFSET只用于简单变量,应去掉CS不能作为目的寄存器(9)段地址不能直接送入数据段寄存器.请写出下述两条指令执行后,BX寄存器中的内容。DATASEGMENTTABLE_ADDRDW1234HDATAENDSMOVBX,TABLE_ADDRLEABX,TABLE_ADDR答案:MOVBX,TABLE_ADDR:执行后(BX)=1234HLEABX,TABLE_ADDR;执行后(BX)=OFFSETTABLE_ADDR.变量DATAX和DATAY定义如下:DATAXDW0148HDW2316HDATAYDW0237HDW4052H按下述要求写出指令序列:(1)DATAX和DATAY中的两个字数据相加,和存放在DATAY和DATAY+2中。(2)DATAX和DATAY中的两个双字数据相加,和存放在DATAY开始的字单元中。(3)DATAX和DATAY两个字数据相乘(用MUL)。(4)DATAX和DATAY两个双字数据相乘(用MIL)。(5)DATAX除以23(用DIV)。(6)DATAX双字除以字DATAY(用DIV)〇答案:MOVAX,DATAXADDAX,DATAYMOVBX,DATAX+2ADDBX,DATAY+2MOVDATAY,AXMOVDATAY+2,BXMOVAX,DATAXADDDATAY,AXMOVAX,DATAX+2ADCDATAY+2,AXMOVAX,DATAXMULDATAYMOVDATAY,AXMOVDATAY+2,DXMOVAX,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,DXMOVAX,DATAXMOVBL,23DIVBLMOVBL,AHMOVAH,0MOVDATAY,AX;存放商MOVAL,BLMOVDATAY+2,AX;存放余数(6)MOVAX,DATAXMOVDX,DATAX+2DIVDATAYMOVDATAY,AXMOVDATAY+2,DX.试分析下面的程序段完成什么操作?MOVCL,04SHLDX,CLMOVBL,AHSHLAX,CLSHRBL,CLORDL,BL答案:将DX:AX中的双字左移4位(乘16).用其他指令完成和下列指令一样的功能:(1)REPMOV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论