欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    微机原理与接口技术第二版课后习题答案,龚尚福版上课讲义.doc

    • 资源ID:86476150       资源大小:1.46MB        全文页数:77页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    微机原理与接口技术第二版课后习题答案,龚尚福版上课讲义.doc

    Good is good, but better carries it.精益求精,善益求善。微机原理与接口技术第二版课后习题答案,龚尚福版-微机原理与接口技术部分答案第二版主编:龚尚福2.28086微处理器由哪几部分组成?各部分的功能是什么?16355【解】:按功能可分为两部分:总线接口单元BIU(BusInterfaceUnit)和执行单元EU(ExecutionUnit)。总线接口单元BIU是8086CPU在存储器和I/O设备之间的接口部件,负责对全部引脚的操作,即8086对存储器和I/O设备的所有操作都是由BIU完成的。所有对外部总线的操作都必须有正确的地址和适当的控制信号,BIU中的各部件主要是围绕这个目标设计的。它提供了16位双向数据总线、20位地址总线和若干条控制总线。其具体任务是:负责从内存单元中预取指令,并将它们送到指令队列缓冲器暂存。CPU执行指令时,总线接口单元要配合执行单元,从指定的内存单元或I/O端口中取出数据传送给执行单元,或者把执行单元的处理结果传送到指定的内存单元或I/O端口中。执行单元EU中包含1个16位的运算器ALU、8个16位的寄存器、1个16位标志寄存器FR、1个运算暂存器和执行单元的控制电路。这个单元进行所有指令的解释和执行,同时管理上述有关的寄存器。EU对指令的执行是从取指令操作码开始的,它从总线接口单元的指令队列缓冲器中每次取一个字节。如果指令队列缓冲器中是空的,那么EU就要等待BIU通过外部总线从存储器中取得指令并送到EU,通过译码电路分析,发出相应控制命令,控制ALU数据总线中数据的流向。2.3简述8086CPU的寄存器组织。【解】:(1)通用寄存器:通用寄存器又称数据寄存器,既可作为16位数据寄存器使用,也可作为两个8位数据寄存器使用。当用作16位时,称为AX、BX、CX、DX。当用作8位时,AH、BH、CH、DH存放高字节,AL、BL、CL、DL存放低字节,并且可独立寻址。这样,4个16位寄存器就可当作8个8位寄存器来使用。(2)段寄存器:段寄存器共有4个CS、DS、SS、ES。代码段寄存器CS表示当前使用的指令代码可以从该段寄存器指定的存储器段中取得,相应的偏移值则由IP提供;堆栈段寄存器SS指定当前堆栈的起始地址;数据段寄存器DS指示当前程序使用的数据所存放段的起始地址;附加段寄存器ES则指出当前程序使用附加段地址的起始位置,该段一般用来存放原始数据或运算结果。(3)指针和变址寄存器:堆栈指针SP用以指出在堆栈段中当前栈顶的地址。入栈(PUSH)和出栈(POP)指令由SP给出栈顶的偏移地址。基址指针BP指出要处理的数据在堆栈段中的基地址,故称为基址指针寄存器。变址寄存器SI和DI用来存放当前数据段中某个单元的偏移量。(4)指令指针与标志寄存器:指令指针IP的功能跟Z80CPU中的程序计数器PC的功能类似。正常运行时,IP中存放的是BIU要取的下一条指令的偏移地址。它具有自动加1功能,每当执行一次取指令操作时,它将自动加1,使它指向要取的下一内存单元,每取一个字节后IP内容加1,而取一个字后IP内容则加2。某些指令可使IP值改变,某些指令还可使IP值压入堆栈或从堆栈中弹出。标志寄存器FLAGS是16位的寄存器,8086共使用了9个有效位,标志寄存器格式如图2.5所示。其中的6位是状态标志位,3位为控制标志位。状态标志位是当一些指令执行后,表征所产生数据的一些特征。而控制标志位则可以由程序写入,以达到控制处理机状态或程序执行方式的表征。2.4试述8086CPU标志寄存器各位的含义与作用。【解】:(1)6个状态标志位的功能分别叙述如下:CF(CarryFlag)进位标志位。当执行一个加法(或减法)运算,使最高位产生进位(或借位)时,CF为1;否则为0。PF(ParityFlag)奇偶标志位。该标志位反映运算结果中1的个数是偶数还是奇数。当指令执行结果的低8位中含有偶数个1时,PF=1;否则PF=0。AF(AuxiliarycarryFlag)辅助进位标志位。当执行一个加法(或减法)运算,使结果的低4位向高4位有进位(或借位)时,AF=1;否则AF=0。ZF(ZeroFlag)零标志位。若当前的运算结果为零,ZF=1;否则ZF=0。SF(SignFlag)符号标志位。它和运算结果的最高位相同。OF(OverflowFlag)溢出标志位。当补码运算有溢出时,OF=1;否则OF=0。(2)3个控制标志位用来控制CPU的操作,由指令进行置位和复位。DF(DirectionFlag)方向标志位。它用以指定字符串处理时的方向,当该位置“1”时,字符串以递减顺序处理,即地址以从高到低顺序递减。反之,则以递增顺序处理。IF(InterruptenableFlag)中断允许标志位。它用来控制8086是否允许接收外部中断请求。若IF=1,8086能响应外部中断,反之则不响应外部中断。注意:IF的状态不影响非屏蔽中断请求(NMI)和CPU内部中断请求。TF(TrapFlag)跟踪标志位。它是为调试程序而设定的陷阱控制位。当该位置“1”时,8086CPU处于单步状态,此时CPU每执行完一条指令就自动产生一次内部中断。当该位复位后,CPU恢复正常工作。2.58086中,存储器为什么采用分段管理?【解】:8086/8088的地址总线宽度为20位,其最大寻址空间是1MB。而其他微处理器则在实模式下只能访问前1MB的存储器地址。实际上,实模式就是为8086/8088而设计的工作方式,它要解决在16位字长的机器里怎么提供20位地址的问题,而解决的办法是采用存储器地址分段的方法。程序员在编制程序时要把存储器划分成段,在每个段内地址空间是线性增长的。每个段的大小可达64KB,这样段内地址可以用16位表示。存储器分段的方法虽然给程序设计带来一定的麻烦,但这种方法可以扩大存储空间,而且对于程序的再定位也是很方便的。2.6什么是逻辑地址?什么是物理地址?如何由逻辑地址计算物理地址?【解】:物理地址:完成存储器单元或I/O端口寻址的实际地址成为物理地址,CPU型号不同其物理地址也不同。物理地址是指CPU和存储器进行数据交换时实际所使用的地址,而逻辑地址是程序使用的地址。物理地址由两部分组成:段基址(段起始地址高16位)和偏移地址。前者由段寄存器给出,后者是指存储单元所在的位置离段起始地址的偏移距离。当CPU寻址某个存储单元时,先将段寄存器的内容左移4位,然后加上指令中提供的16位偏移地址而形成20位物理地址。在取指令时,CPU自动选择代码段寄存器CS,左移4位后,加上指令提供的16位偏移地址,计算出要取指令的物理地址。堆栈操作时,CPU自动选择堆栈段寄存器SS,将其内容左移4位后,加上指令提供的16位偏移地址,计算出栈顶单元的物理地址。每当存取操作数时,CPU会自动选择数据段寄存器(或附加段寄存器ES),将段基值左移4位后加上16位偏移地址,得到操作数在内存的物理地址。2.9在80x86微机的输入/输出指令中,I/O端号通常是由DX寄存器提供的,但有时也可以在指令中直接指定00H0FFH的端口号。试问可直接由指令指定的I/O端口数是多少?【解】:由于在80x86的输入/输出指令中,可以直接在00H0FFH指定,所以直接由指令指定的I/O端口数是256。3.1指令分成几部分?每部分的作用是什么?【解】:每条指令由两部分组成:操作码字段和地址码字段。操作码字段:用来说明该指令所要完成的操作。地址码字段:用来描述该指令的操作对象。一般是直接给出操作数,或者给出操作数存放的寄存器编号,或者给出操作数存放的存储单元的地址或有关地址的信息。3.2指出下列MOV指令的源操作数的寻址方式:MOVAX,1234HMOVAX,BXMOVAX,BXMOVAX,TABLE;TABLE;TABLE是一个变量名MOVAX,1234HMOVAX,BX+1234HMOVAX,BPSIMOVAX,BX+SI-1234H【解】:MOVAX,1234H立即寻址MOVAX,BX寄存器寻址MOVAX,BX寄存器间接寻址MOVAX,TABLE;TABLE是一个变量名直接寻址方式MOVAX,1234H直接寻址方式MOVAX,BX+1234H寄存器相对寻址MOVAX,BPSI基址变址寻址MOVAX,BX+SI1234H相对地址变址寻址3.3设:(DS)=2000H,(BX)=0100H,(SS)=1000H,(BP)=0010H,TABLE的物理地址为2000AH,(SI)=0002H。求下列每条指令源操作数的存储单元地址:MOVAX,1234HMOVAX,BXMOVAX,TABLEBXMOVAX,BPMOVAX,BPSI【解】:存储单元地址:(DS)×10H+EA=2000H×10H+1234H=21234H存储单元地址:(DS)×10H+(BX)=2000H×10H+0100H=20100H存储单元地址:(DS)×10H+EA=2000H×10H+0100H+000AH=2010AH存储单元地址:(SS)×10H+EA=1000H×10H+0010H=10010H储单元地址:(SS)×10H+EA=1000H×10H+0010H+0002H=10012H3.4设ARRAY是字数组的首地址,写出将第5个字元素取出送AX寄存器的指令,要求使用以下几种寻址方式:直接寻址寄存器间接寻址寄存器相对寻址基址变址寻址【解】:(1)直接寻址(2)寄存器间接寻址(3)寄存器相对寻址(4)基址变址寻址MOVAX,ARRAY+8MOVBX,ARRAY+8MOVBX,8LEABX,ARRAYMOVAX,BXMOVAX,ARRAYBXMOVSI,8MOVAX,BX+SI3.5设当前(CS)=2000H,(IP)=2000H,标号NEXT定义在当前代码段偏移地址是0100H处,(DS)=1000H,(BX)=1000H,(11000H)=00H,(11001H)=30H,数据段定义的字变量ARRAY的内容为1000H,试写出下列转移指令的目标转移地址JMPNEARPTRJMPBXJMPWORDPTRARRAY【解】:JMPNEARPTR此转移指令的目标转移地址为:20100HJMPBX此转移指令的目标转移地址为:21000HJMPWORDPTRARRAY此转移指令的目标转移地址为:23000H3.6设当前(CS)=2000H,(IP)=2000H,标号NEXT定义在3000H:1000H处。当前(DS)=1000H,(BX)=1000H,(11000H)=00H,(11001H)=03H,(11002H)=00H,(11003H)=30H,数据段定义的字变量ARRAY的内容为0300H,(ARRAY+2)=3000H,试写出下列转移指令的目标转移地址:JMPFARPTRNEXTJMPDWORDARRAY【解】:JMPFARPTRNEXT此转移指令的目标转移地址为:31000HJMPDWORDARRAY此转移指令的目标转移地址为:30300H3.7下列每组指令有何区别?(1)MOVAX,1234HMOVAX,1234H(2)MOVAX,TABLEMOVAX,TABLE(3)MOVAX,TABLELEAAX,TALBE(4)MOVAX,BXMOVAX,BX【解】:(1)MOVAX,1234H将立即数1234H送到寄存器AX中MOVAX,1234H将存储区1234H中的内容送到寄存器AX中(2)MOVAX,TABLE将标号TABLE的地址送到寄存器AX中MOVAX,TABLE将存储区TABLE中的内容送到寄存器AX中(3)MOVAX,TABLE将标号TABLE的地址送到寄存器AX中LEAAX,TALBE将标号TABLE的地址送到寄存器AX中(4)MOVAX,BX寄存器寻址MOVAX,BX寄存器间接寻址3.8MOVCS,AX指令正确吗?【解】:MOVCS,AX指令不正确。因为CS是指令寄存器,由系统自动改变,不能由指令进行更改。3.9写一指令序列,将3456H装入DS寄存器。【解】:MOVAX,3456HMOVDS,AX3.10若正在访问堆栈中03600H单元,则SS和SP的值是多少?【解】:若正在访问堆栈中03600H单元,则SS和SP的值会有好多组合,其中可以有SS是0300H,SP是0600H。3.11若(SS)=2000H,(SP)=000AH,先执行将字数据1234H和5678H压入堆栈的操作,再执行弹出一个字数据的操作,试画出堆栈区及SP的内容变化过程示意图(标出存储单元的物理地址)。SP20006H78H【解】:物理地址(SS)×10HSP20007H56H34HSP20008H20008H20009H2000AH12H34H12H20009HSP2000AH2000AH3.16解释XLAT指令是怎样转换AL寄存器中的内容的。并编写一段程序用XLAT指令将BCD码09转换成对应的ASCII码,并将ASCII码存入数据ARRAY中。【解】:XLAT指令是将AL的内容替换成存储单元中的一个数,往往用于代码转换。使用此指令前,先在数据段建立一个表格,表格首地址存入BX寄存器,欲取代码的表内位移量存入AL寄存器中。XLAT指令将(AL)值扩展成16位,与(BX)相加形成一个段偏移地址,段地址取(DS),据此读出代码送入AL寄存器。程序如下:TABLEDB30H,31H,39HARRAYDB1ODUP(?)MOVCL,10MOVSI,0MOVBX,OFFSETTABLEMOVAL,ALAGAIN:XLATMOVSI,ALINCSIINCALLOOPAGAIN3.17若(AX)=0001H,(BX)=0FFFFH,执行ADDAX,BX之后,标志位ZF、SF、CF和OF各是什么?【解】:(AX)=0001H=0000000000000001B+(BX)=0FFFFH=1111111111111111B(AX)=0001H=10000000000000000B则:ZF=1、SF=0、CF=1、OF=03.18写一指令序列完成将AX寄存器的最低4位置1,最高3位清0,第7、8、9位取反,其余位不变。【解】:ORAX,000FH(ORAX,0000000000001111B)ANDAX,1FFFH(ANDAX,0001111111111111B)XORAX,01C0H(XORAX,0000000111000000B)3.19试写出执行下列指令序列后AX寄存器的内容。执行前(AX)=1234H。MOVCL,7SHLBX,CL【解】:(AX)=1234H=0001001000110100B执行后:(AX)=0001101000000000B=0001101000000000B=1A00H4.1假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列指令中哪些是非法的?它们的错误是什么?MOVBP,ALMOVWORD_OPBX+4*3DI,SPMOVWORD_OP1,WORD_OP2MOVAX,WORD_OP1DXMOVSAVEWORD,DSMOVSP,SS:DATA_WORDBXSIMOVBXSI,2MOVAX,WORD_OP1+WORD_OP2MOVAX,WORD_OP1-WORD_OP2+100MOVWORD_OP1,WORD_OP1-WORD_OP2【解】:MOVBP,AL两个操作数不匹配MOVWORD_OPBX+4*3DI,SPMOVWORD_OP1,WORD_OP2两个内存单元之间不能直接传送数据MOVAX,WORD_OP1DXMOVSAVEWORD,DSMOVSP,SS:DATA_WORDBXSI当基址为BX时,选取DS寄存器MOVBXSI,2MOVAX,WORD_OP1+WORD_OP2MOVAX,WORD_OP1-WORD_OP2+100MOVWORD_OP1,WORD_OP1-WORD_OP24.2假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:ADDVAR1,VAR2SUBAL,VAR1JMPLABSIJNZVAR1JMPNEARLAB【解】:ADDVAR1,VAR2ADD两个操作数不能同时为存储单元,MOVAX,VAR1ADDAX,VAR2SUBAL,VAR1两个操作数不匹配SUBAX,VAR1JMPLABSILAB与SI不能相加JMPWORDPTRSIJNZVAR1JNZ后面应是标号,不应是变量JNZLABJMPNEARLAB缺少PTR运算符JMPNEARPTRLAB4.3画图说明下列语句所分配的存储空间及初始化的数据值。BYTE_VARDBBYTE,12,-12H,3DUP(0,?,2DUP(1,2),?)WORD_VARDW5DUP(0,1,2),?,-5,'BY','TE',256HWORD_VAR00H00H01H00H02H00H00H00H01H00H02H00HBBYTE_VAR41H【解】:(1)(2)0Y59H1E45HT54H120CH212HF4H30个字节00H0210101H02H2101H200H0202H101H202H101H02H2FBH5FFH54H00H56H00H45HBYTE00H41H59H00H02H101H000H202H101H2256H02H4.4假设程序中的数据定义如下:PARTNODW?PNAMEDB16DUP(?)COUNTDD?PLENTHEQU$-PARTNO问PLENTH的值为多少?它表示什么意义?【解】:PLENTH的值为22,它表示数据的个数。4.5有符号定义语句如下:BUFFDB1,2,3,123EBUFFDB0LEQUEBUFF-BUFF问L的值是多少?【解】:PLENTH的值为6。4.6假设程序中的数据定义如下:LNAMEDB30DUP(?)ADDRESSDB30DUP(?)CITYDB15DUP(?)CODE-LISTDB1,7,8,3,2用一条MOV指令将LNAME的偏移地址放入AX。用一条指令将CODE_LIST的头两个字节的内容放入SI。写一条伪操作使CODE_LENGHT的值等于CODE_LIST域的实际长度。【解】:用一条MOV指令将LNAME的偏移地址放入AX。MOVAX,OFFSETLANME用一条指令将CODE_LIST的头两个字节的内容放入SI。MOVSI,WORDPTRCODE_LSIT写一条伪操作使CODE_LENGHT的值等于CODE_LIST域的实际长度。CODE_LENGHTEQUCITY-CODE_LIST4.7试写出一个完整的数据段DATA_SEG,它把整数5赋予一个字节,并把整数-1,0,2,5和4放在10字数组DATA_LIST的头5个单元中。然后,写出完整的代码段,其功能为:把DATA_LIST中头5个数中的最大值和最小值分别存入MAX和MIN单元中。【解】:参考程序如下:DATA_SEGSEGMENTDB1DB5DATA_LISTDB-1,0,2,5,4,5DUP(?)COUNTDB5MAXDB?MINDB?DATA_SEGENDSCODE_SEGSEGMENTASSUMECS:CODE_SEG,DS:DATA_SEGSTARTPROCFARPUSHDSMOVAX,0PUSHAXMOVAX,DATA_SEGMOVDS,AXLEABX,DATA_LISTMOVCX,COUNT-1MOVAL,BXMOVAH,BX+1LOOP1:INCBXCMPAH,ALJAELOOP1XCHGAH,ALLOOP2INCBXCMPAH,BXJAELISXCHGAH,BXJMPLOP2LIS:CMPAL,BXJBELOP2XCHGAL,BXLOOP2MOVMAX,AHMOVMIN,ALRETSTARTENDPCODE_SEGENDSENDSTART4.10给出等值语句如下:ALPHAEQU100BETAEQU25GAMMAEQU2下列表达式的值是多少?ALPHA*100+BETAALPHAMODGAMMA+BETA(ALPHA+2)*BETA-2(BETA/3)MOD5(ALPHA+3)*(BETAMODGAMMA)ALPHAGEGAMMABETAAND7GAMMAOR3【解】:ALPHA*100+BETA100×1002510025ALPHAMODGAMMA+BETA100/(252)19(ALPHA+2)*BETA-2(100+2)*252548(BETA/3)MOD5(25/3)MOD53(ALPHA+3)*(BETAMODGAMMA)(100+3)*(25MOD2)103ALPHAGEGAMMA100GZGAMMA0FFFFHBETAAND725AND71GAMMAOR32OR334.9对于下面的数据定义,三条MOV指令分别汇编成什么?(可用立即数方式表示)TABLEADW10DUP(?)TABLEBDB10DUP(?)TABLECDB1234MOVAX,LENGTHTABLEAMOVBL,LENGTHTABLEBMOVCL,LENGTHTABLEC【解】:MOVAX,LENGTHTABLEAMOVAX,OOOAHMOVBL,LENGTHTABLEBMOVBL,0AHMOVCL,LENGTHTABLECMOVCL,O1H4.10对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?FLDBDB?TABLEADW20DUP(?)TABLEBDBABCDMOVAX,TYPEFLDBMOVAX,TYPETABLEAMOVCX,LENGTHTABLEAMOVDX,SIZETABLEAMOVCX,LENGTHTABLEB【解】:(1)MOVAX,TYPEFLDB(AX)=1(2)MOVAX,TYPETABLEA(AX)=2(3)MOVCX,LENGTHTABLEA(CX)=20(4)MOVDX,SIZETABLEA(DX)=40(5)MOVCX,LENGTHTABLEB(CX)=18.1解释下列概念:中断DMA,中断源,中断向量中断向量表,不可屏蔽中断,通道FCB,中断嵌套,文件标记中断入口,可屏蔽中断【解】:答:当进程要求设备输入数据时,CPU把准备存放输入数据的内存起始地址以及要传送的字节数分别送入DMA控制器中的内存地址寄存器和传送字节计数器。发出数据传输要求的进行进入等待状态。此时正在执行的CPU指令被暂时挂起。进程调度程序调度其他进程占据CPU。输入设备不断地窃取CPU工作周期,将数据缓冲寄存器中的数据源源不断地写入内存,直到所要求的字节全部传送完毕。DMA控制器在传送完所有字节时,通过中断请求线发出中断信号。CPU在接收到中断信号后,转入中断处理程序进行后续处理。中断处理结束后,CPU返回到被中断的进程中,或切换到新的进程上下文环境中,继续执行。中断源:引起中断的事件称为中断源。中断向量表:每种中断都给安排一个中断类型号。80x86中断系统能处理256种类型的中断,类型号为0H0FFH。如图8.3所示的中断源,系统时钟的中断类型为08,键盘为09,软中断中的除法错误的中断类型为0等。每种类型的中断都由相应的中断处理程序来处理,中断向量表就是各类型中断处理程序的入口地址表。中断嵌套:正在运行的中断处理程序,又被其他中断源中断,这种情况叫做中断嵌套。中断就是CPU在执行当前程序时由于内外部事件引起CPU暂时停止当前正在执行的程序而转向执行请求CPU暂时停止的内外部事件的服务程序,该程序处理完后又返回继续执行被停止的程序;中断向量是中断处理子程序的入口地址;地址范围是00000H-003FFH。1. 实验一系统认识实验一实验目的掌握TDN86/88教学实验系统的基本操作。二实验设备TDN86/88教学实验系统一台。三实验内容及步骤系统认识实验(1)(1)程序的输入与修改从3500H内存单元开始建立0-15共16个数据。实验步骤:a 使用串行通讯电缆将实验系统与PC机相连。b 开启实验系统。c 在系统软件所在目录(默认为C:TANGDUW8688)下运行文件WMD86.EXE进入集成操作软件环境,打开文件菜单选择新建,即可开始输入源程序。d 输入程序后,在文件菜单中选择保存程序,注意文件名的格式,扩展文件名必须为*.ASM,例:ABC.ASM。e 在编译菜单中选择汇编(CTRL+F2)对源程序进行汇编,若源程序没有错误生成目标文件*.OBJ,若源程序中有错误则返回错误信息,根据错误信息对源程序进行修改后再进行汇编。f 汇编无误后,在编译菜单中选择链接(CTRL+F3)对汇编生成的*.OBJ目标文件进行链接,链接信息显示于屏幕上,如没有错误,生成相应的可执行文件*.EXE。g 在窗口菜单中选择调试(CTRL+1)打开调试窗口,出现系统提示符“>”后选择菜单中的装入程序,选择相应的*.EXE文件,填入程序段地址与偏移量(默认段地址0000,偏移量2000,一般不用修改),确定后PC开始将程序从磁盘装入到教学实验系统内存,提示装载完毕后使用U命令进行反汇编,检查程序是否正确装入。U命令输入格式为U0000:2000。当发现源程序输入错误或需要调整时,在调试窗口下可用A命令来修改,如修改2000句为MOVDI,3500的操作如下:显示信息键入信息>A20000000:2000MOVDI,35000000:2003>(2)运行程序系统提供了单步运行、断点运行、连续运行等方式,具体操作如下:a. 单步运行:在“>”提示符下输入T或点击菜单中的单步运行执行,每运行一条指令后会显示下一条待执行指令并显示变化寄存器的内容,重复T可一步一步运行直至程序结束。b. 连续运行:在“>”提示符下输入G0000:2000(在系统默认段址CS0000情况下可直接输入G2000)可连续运行程序,在运行过程中,可通过CTRL+BREAK或点击菜单中的停止来终止程序运行。断点运行:在程序中可用B命令定义断点,系统规定最多定义10个断点,例如:显示信息键入信息>B0:20091:>上例中定义了2009地址为断点,输入GB0000:2000程序连续运行至断点时,程序中断并显示当前各寄存器内容。GB是G命令的扩充,表示含断点连续运行程序,断点仅当系统复位时清除。(3)内存单元的内容显示:使用D0000:3500可查看3500H-350FH单元中的内容是否为0-15共16个数。(4)内存单元内容的修改:若要修改某一单元内容,可进行如下操作,其中,“空格”键用于向待编辑单元的高地址方向移动地址,而“-”键则向反方向移动地址;用来确认输入,退出E命令。显示信息键入信息>E35000000:350000_01space0000:350101_Space0000:350202_-0000:350101_>2. 系统操作练习(2)将内存3500H单元开始的0-15共16个数传递到3600H单元开始的数据区中。实验步骤:(1)输入程序并检查无误,经汇编、连接后装入系统。(2)E3500,在3500-3510单元中分别送入00、01、02。(3)G0000:2000,运行程序,按CTRL+BREAK中断,返回监控。1. (4)D3600,显示结果:3600000102。实验二运算类编程实验一实验目的掌握使用运算类指令编程及调试方法。1. 掌握运算类指令对各状态标志位的影响及其测试方法。二实验设备TDN86/88教学实验系统一台三实验内容及步骤8086/8088指令系统提供了实现加、减、乘、除运算的基本指令,可对二进制、BCD码数据类型进行算术运算。二进制双精度加法运算计算XYZ,将结果Z存入某存储单元。本实验程序是双精度(2个16位,既32位)运算,利用累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF1,高位字相加时,同时加上CF中的1。实验步骤:(1)输入程序并检查无误,经汇编、连接后装入系统。(设:CS:0000H,IP:2000H)(2)用U0000:2000查看MOVAX,XXXX(DATA)语句,得到数据段段地址CS:XXXX。用E命令EXXXX:0000给XL,XH,YL,YH赋值存入二进制数A0651500和9EB72100。(3)G0000:2000,运行程序。(4)DXXXX:0008,显示计算结果:3E1D3700CC。2. (5)反复试几组数,考察程序的正确性。十进制数的BCD码减法运算计算X-YZ,其中,X、Y、Z为BCD码。实验步骤:(1)输入程序并检查无误,经汇编、连接后装入系统。(设:CS:0000H,IP:2000H)(2)用U0000:2000查看MOVAX,XXXX(DATA)语句,得到数据段段地址CS:XXXX。用E命令EXXXX:0000给X,Y赋值存入40和12的BCD码:00040201。(3)G0000:2000,运行程序。(4)DXXXX:0004,显示计算结果:0802CC。3. (5)反复试几组数,考察程序的正确性。乘法运算本实验实现十进制数的乘法,被乘数和乘数均以BCD码形式存放于内存中,乘积在屏幕上显示。实验步骤:(1)输入程序并检查无误,经汇编、连接后装入系统。(2)用U0000:2000查看MOVAX,XXXX(DATA)语句,得到数据段段地址CS:XXXX。用E命令EXXXX:0000给在对应数据段填入乘数与被乘数。(3)G0000:2000,运行程序,屏幕显示结果。用CTRLBREAK可终止程序运行。1. (4)反复试几组数,考察程序的正确性。四思考题编写有符号数A1B1A2B2的程序,A1、A2、B1、B2均为符号数。2. 编写两个数值长度不等的BCD码相加程序。1. 实验三分支程序设计实验一实验目的掌握分支程序的结构。掌握分支程序的设计、调试方法。二实验设备TDN86/88教学实验系统一台三实验内容及步骤1. 比较两个字符串STR1与STR2是否相同,若相同则在屏幕上显示MATCH,不同则显示NOMATCH。设计一数据块间的搬移程序设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图3-1所示。图3-1对于两个数据块分离的情况,如图3-1(a),数据的传送从数据块的首址开始,或者从数据块的末址开始均可。但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏,可以得出以上结论:当源数据块首址>目的块首址时,从数据块首地址开始传送数据。当源数据块首址<目的块首址时,从数据块末地址开始传送数据。实验步骤:(1)输入程序并检查无误,经汇编、连接后装入系统。(2)用E命令在以SI为起址的单元中填入16个数。(3)G0000:2000,运行程序。(4)用D命令查看DI为起址的单元中的数据是否与SI单元中的数据相同。(5)试改变SI、DI的取值,观察在三种不同的数据块情况下程序的运行。四思考题为什么当源数据块首址>目的块首址时,应从数据块首地址开始传送数据?而当源数据块首址<目的块首址时,应从数据块末地址开始传送数据?1. 实验四循环程序设计实验一实验目的加深对循环结构的理解。2. 掌握循环结构程序设计的方法。1. 熟练掌握调试循环程序的方法。二实验设备TDN86/88教学实验系统一台三实验内容及步骤编制程序2. 计算式子1+2+3+99+100的结果。求某数据区内负数的个数设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得区内所包含负数的个数。实验步骤:(1)输入程序并检查无误,经汇编、连接后装入系统。(2)E3000输入数据如下:300006(数据个数)3001128882902233(3)G0000:2000,运行实验程序。(4)D3007,显示结果03。四思考题修改程序2,使其能分别求出数

    注意事项

    本文(微机原理与接口技术第二版课后习题答案,龚尚福版上课讲义.doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开