欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    微机原理与接口技术实验56.docx

    • 资源ID:5285988       资源大小:571.94KB        全文页数:14页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    微机原理与接口技术实验56.docx

    微机原理与接口技术实验报告学院:计信学院专业:班级姓名学号实验组实验时间2011/5/6指导教师成绩实验项目名称实验三 汇编程序设计:循环、子程序实验目的熟悉8088指令系统,掌握程序设计方法熟悉汇编语言编程,掌握串操作指令的使用实验原理在Debug环境下,用8086指令编写、调试汇编程序。实验内容编写并调试一个排序子程序,其方法为用冒泡法将RAM中几个单字节无符号的正整数,按从大到小的次序重新排列。在4000H-400FH中查出有几个字节是零,把计数个数放在4100H中。实验环境Debug环境。实验止 步骤在4000H-400AH中通过键盘命令输入不等的10个数,运行本实验程序后检查4000H-400AH中内容是否按从大到小排列。在和PC机联机时,用连续单步方式,可很清 楚地看出数据排序时数据移动变化情况。在4000-400FH的几个单元中输入零,运行本程序后检查4100H中是几个单元数。实验结果一. 实验分析实验目的为在4000H-400AH中通过键盘命令输入不等的10个数,运行本实验程序后检查 4000H-400AH中内容是否按从大到小排列。1. 通过键盘命令输入十个不等的数字。由于用调用dos 21号功能语句时是对每个输入 的数作为字符处理,故存在一个问题:每次输入的数据存储为一个字节,且为3*H (*代 表输入的数字)。此时就每次只能输入个位数字。为了解决这个问题,可以将每次输入的 数字存储为字符型后去除高位的3,变为0*H,由于将输入数据看做十进制的两位数,故 第一次的数字需要乘以10。故先对进行调整后的0*H乘以10,然后存在寄存器中,对于 第二次的数据只需进行调整去除ASCII码带的3,然后加上第一次输入数据调整后的十 位数结果。相当于输入12,存储时先将31H去除3,变为01H,然后01H*10d-0AH,再将 0AH+02H=0CH .此时存储的数据才为正确的输入的十进制数字12。每次执行输入两个数 字,循环十次完成输入数据。2. 内循环:进行输入的缓冲区中的数据的排序。采用冒泡排序法,第一次将第一个数据 与其挨着的下一个数据进行比较,若其小于下面的数据则按大在上,小在下调换位置。 然后重复比第二个数据和第三个数据,大在上,小在下,依次循环直至最后一个数据。 此时保证最小的数据在最底下。3外循环:重复进行第2步,比较直至倒数第二个数据。然后重复第2步,比较直至倒 数第三个数据。每次重复内循环,执行次数少依次,直至最后实现从大到小,依次排列。二. 流程图左边为输入数据的流程图,右边为整体的流程图。三.代码DATA SEGMENT BUFF DB 10 DUP(?) DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AX;初始化MOV CX,000AH;CX中放计数次数。由于有十个数,需循环输入10 次,故 CX=0AHMOV BX,0000H;BX作为缓冲区偏移首址,每次将输入数据 BUFF中,故BX作为控制变量。GET: PUSH CX;CX入栈,保证循环取得十个两位的十进制数PUSH BX;由于在后面对输入数据进行处理的时候要用到 BX,且BX又要充当缓冲区偏移地址,故每 次循环获得数字时先将BX入栈,用时出栈MOV CX,0002H;每次获得两位十进制数时要获得两次数字,故CX 为 0002HMOV BX,0000H;每次获得两位十进制数时需要BX在两次输 入数字时初始值为0,故此时赋值为0000Hnewchar:;进入获得两位十进制数字PUSH CX;CX入栈。即此时将0002H入栈MOV AH,01HINT 21H;21号功能调用,每次输入一个字符sub al,30h;字符存储形式为3*H,故将输入的存储在AL 中的数据减去30H.jl STOP;若小于30H则证明不是数字,退出cmp al,9djg STOP;若大于09d,即也不是数字,退出cbw.调整高位,若AL符号位正,则高位全为0, 若为负,则全为1xchg ax,bx;ax,bx中数据互换mov cx,10d;CX赋值为十进制数字10mul cx;将CX中的数据与AX中数据相乘。存储在 AX中xchg ax,bx;交换AX,BX中的数据add bx,ax;AX,BX数据相加,存储在BX中POP CX;CX 出栈。CX=0002HDEC CX;CX减一。由于在调整输入数据时用到CX, 为保证数据不被更改,故用入栈出栈方式保 存。此时CX=0001H。保证在每次输入时要输CMP CX,0000HJNZ newcharXCHG AX,BXPOP BXMOV BUFFBX,ALINC BXPOP CXLOOP GETMOV CX,000AH入两次数据。;将CX与0000H比较;不、寺于0,则表示个兀整的两位十进制 数字没有输入完,继续跳转到newchar;等于0,表示输入完全。此时交换AX,BX 数据,进入保存输入的十进制数字。;BX出栈,此时BX充当缓冲区偏移地址;由于假定输入数据全为正,此时AL中就是 存储的输入的两位十进制数。将其存储到缓 冲区中。偏移地址为BX。;存储 个数后BX自动加1,为下次存储做 准备;CX出栈,此时CX=000AH。保证循环获得 数据次数;循环十次获得数据;循环获得数据后要进入排序,此时CX和BX都已经改变,需要对其初始化,保证下面调整的需 要MOV BX,0000HFIRST:MOV BX,OFFSET BUFF ;BX 作为 BUFF 的偏移地址PUSH CX;将CX入栈SECOND:MOV AH,BXMOV AL,BX+1CMP AH,ALJL CHANGE;缓冲区中第一个和第二个数据分别放入AX中 的AH和AL中;比较AH,AL;AH<AL,则转到CHANGE,完成交换THIRD:INC BXLOOP SECONDLAST:POP CXLOOP FIRSTJMPSTOP;BX加1,保证从第二个数据开始重复SECOND;CX出栈,外循环,保证进入下轮内循环;循环FIRSTCHANGE:XCHG AH,ALMOV BX,AH;交换数据MOV BX+1,AL小数据在下JMP THIRD;交换数据的部分,使得人数据在上,STOP:MOV AX,4C00HINT 21HCODE ENDSEND四.实验结果由于4100H地址中的数字为计数器,所以先进行清理操作。然后将缓冲区首址送到DI中,将10H计数器送到CX中,以便进行循环查找并且计数的功能。循环体中的语句完成找0并且给计数器加1的功能。具体步骤如下。1先比较DI中的数据是否为0.若为0,则将计数器中的内容加1,然后转入第二步。否则直接跳到第二步。2将DI加1,即跳到下一个数。3判断此时比较完没有,若比较完则跳出循环,若没有,转向第一步,继续比较。直至最后跳出循环。具体代码如下。二流程图计致抵元41G0H清零堀冲区|、门止堵的淌PI字节故IUH送匚K三实验代码DATA SEGMENTORG 4000HBUFF DB 00H,01H,02H,00H,03H,04H,05H,06H,00H,07H,08H,09H,00H,00H,00H,00HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA;数据段初始化;将计数的4100H地址赋值给BXMOV DS,AXMOV BX,4100HMOV AL,BXMOV AL,00H;对4100H地址处的内容清零;缓冲区首地址4000H赋值给DI;计数器CX赋值为BUFF数组中的个数MOV BX,ALMOV DI,4000HMOV CX,0010HFIRST:MOV AL,DICMP AL,00HJE YESJMP NEXTNEXT:INC DILOOP FIRSTJMPSTOPYES:;比较数组的第一个元素,看是否为0;若为0,则转到YES处,执行0计数器加1;对下轮比较做参数变化,将DI加1,指向下一个数组元素;然后转为下轮比较;比较结束后转结束语句MOV AL,BXINC ALMOV BX,ALJMP NEXT;实现对4100H中的数据进行加1操作。即完成计数;跳回NEXT进入下轮比较STOP:MOV AX,4C00HINT 21HCODE ENDS;返回DOS调用语句END四.实验结果fai C:Wi n dowssyste m 3 2cmd. exeC:nasn50>nasn sy6 Microsoft <R> Macro fissenbler Uersion 5.00 Copyright <C> Microsoft Corp 1981-1985, 1987- All rights reserued.Object filename Esy6.OBJ: Source listing CNUL.LST: Cross-reference NUL.CRF:50126 + 415010 Bytes synbol space free0 Warn ing Errors 0 Seuere ErrorsC = 5网福sy6Microsoft <R> Ouerlay Linker Uersion 3.60 Copyright <C> Microsoft Corp 1983-1987. fill rights reserued-Run File SV6.EXE: List File NUL.MAP: Libraries .LIB: LINK : warning L4021: no stack segmentC:nasn50>debug sy6.exe -GProgram terminated normalli/-D 4100 410F 1443:4100 00 01 02 00 03 04 05 06-00 07 08 09 00 00 00 00-D 4200 4200 1443:4200 07.-QC: masin50>例 4.64DATA SEGMENTARY1 DW 100 DUP(01H)SUM1 DW ?ARY2 DW 100 DUP(02H)SUM2 DW ?DATA ENDSSTACK SEGMENT STACK 'STACK'SA DW 50 DUP(?)TOP EQU LENGTH SASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKMAIN PROC FARSTART:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV SP,TOPLEA SI,ARY1MOV CX,LENGTH ARY1CALL SUMLEA SI,ARY2MOV CX,LENGTH ARY2CALL SUMMOV AH,4CHINT 21HRETMAIN ENDPSUM PROC NEARXOR AX,AXL1:ADD AX,WORD PTRSIINC SIINC SILOOPL1MOV WORD PTRSI,AXRETSUM ENDPCODE ENDSEND START4?78 + 4150?4 Btes symbol space fNULbLSTJ=NUL.CRF3:QC = Mriasn50>link 464Microsoft CR Oyerla1 Linlicr- Copyig-ht <C> Microsoft Coi*pUcrsion 3.60A11 rig-hts Feservccl-1983-187.Fkm File M64.EKE1:List File NUL.rtflPJLibrarits .LID3:C: VniacnE0>debnj 44FFropan terminated ncrmally -d 9190 0292±44ft144ft144A= 0100= 0110:012B01QIBl00 0199 01013 Bl66010101丽 93 aa144ft 144ft=0140144A144ft013H0150 site144(1 = 0170144ft144ft01800190144A;0ift0144ft144ft144ft144ft144FI144A144ft144ft144ft01B0 01CB mne 81EB 01F0 0206 0216 0226 源拥驹 99 && 99 00 03 99 00 00 丽 丽 丽 00 00 99 09 国国g01Ql0101M101Ql0101叫他殴踞03能叫 M- -M- _M- 6 6 0 51 M E >3 IS W 6 6 6 IS w 6 s 6 -u- -H 6 6 6 -u- 6 -M- 6 E啪 99 03 93 03 aa 09 03 03 93 丽 99 09 09 93 03 国厢144ft144ft±44ft±44ft144ft144A: 0240 = 0250 S92G6 = 0270 = 0280 :B29BEDZ 62 62 02 02 029900 明 0099 丽职 99 93 && 930 6 -M- 6 0 0 R- s _u01 01 Bl Ml01 ei 01 0101 01 01 0101 02 H2 0282 02 02 02 H202 02 02 0200M01 00-01 SSH31 H0-01 00-01 00H01 00BIBB01 00H01 00-01 00-01 00M01 00-64 丽132 00H02 00-02 00-02 00H02 00-02 W0H02 0EH0Z 00-02 B0M02 00M02 000230 3090 90 30 90 30 as 90 30 38 30 SB ae 90 90 30 30 da ao 90 ao &Q 3001 01 Hl Hl 01 01 01 01 Hl 01 01 01 02 02 H2 02 02 02 02 02 H2 02 02 02 02SQ 9160 3100 32SQ 02S0 32B0 32S0 92(313 0200 &2QQ 3280 00 BH UH 00 00 00 80 BH 00 00 00 00 BO BH 00 00 00 00 on OH 00 00 80 0061 61 Bl Bl6161 ei si 0101 01 01 S2&2 02 62 026262 »2 02 0262 &2 62MMS0G&60G0Q&60G&丽0 G0 0例 4.65MDATA SEGMENTARY1 DB 20 DUP(01)SUM1 DW ?ARY2 DB 100 DUP(08)SUM2 DW ?MDATAENDSMSTACK SEGMENT STACK 'STACK'SB DW 100 DUP(?)TOP LABEL WORDMSTACK ENDSMCODE SEGMENTASSUME CS:MCODE,DS:MDATA,SS:MSTACKMAIN PROC FARSTART:MOV AX,MSTACKMOV SS,AXMOV SP,OFFSET TOPPUSH DSMOV AX,0PUSH AXMOV AX,MDATAMOV DS,AXMOV AX,OFFSET ARY1PUSH AXMOV AX,SIZE ARY1PUSH AXCALL FAR PTR PADDMOV AX,OFFSET ARY2PUSH AXMOV AX,SIZE ARY2PUSH AXCALL FAR PTR PADDRETMAIN ENDPMCODEENDSPCODE SEGMENTASSUME CS:PCODE,DS:MDATA,SS:MSTACKPADD PROC FARPUSH BXPUSH CXPUSH BPMOV BP,SPPUSHFMOV CX,BP+10MOV BX,BP+12MOV AX,0NEXT:ADD AL,BXDAAMOV DL,ALMOV AL,0ADC AL,AHDAAMOV AH,ALMOV AL,DLINC BXLOOP NEXTMOV BX,AXPOPFPOP BPPOP CXPOP BXRET 4PADD ENDPPCODEENDSENDSTARTC -nasn5B>debLigr 465 .cxe 一七EX如驹 ES=144ftAX=14&«B£=144ft 1462=0083 8ED9 -tC* =00DS £S=146B MOUDX=HH00 SP=0UCSCE=1462 IP=0O03SSAKBP=a0OO SI 汹啪W DI 二晚驹NU UP El PL ME HA PO NCAX=1468 BS =144ft 1462=0080 -tCM=G0D?££=146BD8-O60SC£=1462PUSH DGSP-BOCB ip=aoasBP-0000 SI-0399MU UP El PL 曲 NA PO NICAX-14G0LS=144fl 14&2=9009 B8Q399ES=144ftCK-60D?SS =1-168 MOUDx-oeesCS=146ZSP-BBC6 iE=a««ynr-0000 si-0399 NU UP El FL NH PO MGns=3000 EX=0000BS=144ft ES-144A &4fi2:000C 50 ktCM=00D?SS=1-16BPUSHDXO000CS=1462AKSP=B0C6IP-0O0CBP=3000 SI=0000 BI-G000NU UP El PL HE Hft FO NGAX=0030 BX=0300 BS-144A ES=144A 14b:0U«D B85H14PtCX=60D9SS=1GDHOUD!=OSS0CS=1462EP=B0C4IP-0O0DF)"45DBP=3300 SI=0303 DI=QQ0&NU UP El FL ME Hft FO NGBX=0000 ES=i44ftnX=145ft BS-144h 1462=0816 8EDBH:CX=B0D9 DX=B6S0 SP=00C4£S=14GBMOUCS=1462 IP-8016DS,AKBP=388B SI=0008 D1=BB00HU UP El PL MZ HA PC HCAX=145AIS=145ftEX=S990 ES=144ft 14G2=0012 BDQ399CX=60DJ£S=146BMOUDX=Oe00 SP=0BC4C£=1462 IP=Bfll2BP=000B SI=0999NU UP El PL 戚 IDI=6609 POFi'u gredLFi t c rmin at e d-d I45A:00S0ncrmcilly14511 = 0006 145A=00i6 145A:002B 145ft=0830 145ft=0040145ft:0068 145A:007061 91 01 &1 01 01 RB 38 Hg SO 0Q 88 S8 08 OG 丽丽腮QO 9S 08 M8 9B U818# osfi6 8 OOBOOQOU 1 0 M a 8a 8 8 _w 00 0 fi- 0 -3 10甘 D BDU D B 02000000 0 0"0 0仞 0 001-01 B8-0B BH-0H 08-0B 08-0B 08-«B 08-0B a8-WK18UM_U8R_UM_ 1SO0CSSSU 0 00 0 0fl 0 0 1 8 s o 8 s 8 rt_ 00000Q00 188O8RO8 00 6 B u 16 uu o 8CC o 5> 0 o B 0 0 o o u 1 8 uo o 8_H o 8实验总结(:nasn50>通过此次实验进一步掌握了汇编语言设计和调试方法。在实验过程中遇到的问题有通过键盘输入两位十进制数的问题,后来通过对输入的两个 数字进行一定的调整后得到了正确的十进制数字。具体调整方案见实验5实验分析。还 有由于在调整十进制数中用到寄存器,但是由于寄存器数目少,在实验过程中存在一个 数据不断被覆盖的问题,通过在适当的时机入栈出栈解决了这个问题。指导教师意见签名:

    注意事项

    本文(微机原理与接口技术实验56.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开