东北大学计算机硬件基础分支程序设计实验报告_第1页
东北大学计算机硬件基础分支程序设计实验报告_第2页
东北大学计算机硬件基础分支程序设计实验报告_第3页
东北大学计算机硬件基础分支程序设计实验报告_第4页
东北大学计算机硬件基础分支程序设计实验报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、东北大学计算机硬件技术基础实验才目告班级:机械0908姓名:学号: 20092063实验题目:分支程序设计日期: 2011年11月28日实验一、实验目的1)掌握分支程序的结构;2)掌握分支程序的设计,调试方法;二、实验内容设有3个单字节无符号数存放在 BUF开始的缓冲区中,编写一个能将他们 从大到小重新排序的程序。三、算法描述流程图四、实验步骤.输入源程序:DATASEGMENTBUFDB 13,52 ,14DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART: MOVAX,DATAMOVDS,AXMOVSI,OFFSET BUFMOVAL,SI;把3个

2、数取到寄存器中MOVBL,SI+1MOVCL,SI+2CMPAL,BLJAENEXT1XCHGAL,BL;排序,将最大数送AL寄存器NEXT1:CMPAL,CLJAENEXT2XCHGAL,CLNEXT2:CMPBL,CL;将最小数送CL寄存器JAENEXT3XCHGBL,CLNEXT3:MOVSI,AL;从大到小依次存回缓冲区MOVSI+1,BLMOVSI+2,CLMOVAH,4CHINT21HCODEENDSENDSTART.执 行emulate程序,对源程序进行 调试,生成original source code和 emulator:noname.exe_t件,结果无错误。.执行run程

3、序,打开程序aux,选择memory,查看地址0710:0000,经验证运行结果为34 0E 0D,即52 14 13,由大到小排列,满足题目要求且无错误。五、实验结果.执行emulate程序,对源程序进行调试,生成original source code和 emulator:noname.exe_t件,彳马至U如下界面:D71VDDDDD711DDDDL. uMulalcir:IL4JELkia2. ezt?kjr s - 1 012 _ LiLU lillu 7177-JUK. 34S6789ABCDEF mull mm 7777777777777 0000000000000a.el746

4、7S10-rd非非需器翡聒装1 0-1AR- I 30*-100screen souice1?!: original source codeITl nlfxMMMMMCJxcJxcJx -vrjOOOOMNCMNCMNC tvvvvpbhpbhpbh aDSABCA0 A0 I B0X.h T h T : : J6L LCL 5ILLLL1BL1C0TJ - s _0mX0SSS-LA0mBc h XZL L2CAL ALBLstack口口BUDATASEGMENT *DBc - A-fLall lx:lI, 1SRC; CF=1时, DSTRSC当CF=1时,用JC指令可以实现转移;当 CF

5、=0时,用JNC指令可以实 现转移。七、扩展题在BUF开始的单元里有3个单字节无符号数,编写程序找出它们中的最小 值并存入MIN单元。1 .输入源程序如下:DSEGSEGMENTBUFDB 99,72,88MINDB 0DSEGENDSCODESEGMENTASSUMEcs:csegds,dsegSTART:MOVAX,DSEGMOVDS,AXMOVSI,OFFSET BUFMOVAL,SIMOVBL,SI+1MOVCL,SI+2CMPAL,BL存器JAENEXT1XCHGAL,BLNEXT1:MOVMIN,BL区CMPBL,CLJAENEXT2XCHGBL,CLNEXT2:MOVMIN,CL

6、MOVAH,4CHINT21HCODEENDSENDSTART2.执行emulate 程序,对源程序进行调试,;把3个数取到寄存器中;排序,将最大数送AL寄;排序,将最小数送 MIN生成 original source code 和emulator:noname.exe_t件,结果无错误。3.执行run程序,打开程序aux,选择memory,查看地址0710:0000,结果如下IKandos Access KeKory0710:0000update疗 tablelist0?LO:OOOC63 iS 5S 幅00 00 00 00-00 00 00 00 00 00 00 000?10:0010

7、B8 10 07 鸵D EE 00 00-Sfl 1 兄 8fl 50 01 Sfl AC 020710:00203ft C3 73 0286 C3 SS IE-03 00 3百 D9 73 02 86 D90710:003088 OiE 03 00Bi 4C CO 21-90 90 9。削 90 90 SO 900710:004090 90 90 SO90 90 90 90-90 9C 90 90 F4 00 00 000710:005000 00 00 co00 00 00 0Q-00 0C 00 00 00 00 00 000710:006000 00 00 co00 00 00 0Q-

8、00 00 00 00 CO 00 0。 000710:007000 00 00 0000 00 00 OQ-OO 00 00 00 00 00 00 00cHMHir.”(rL可:E狗经验证运行结果为63 48 58 48 ,即99 72 88 , MIN区值为48,即最小值72, 无错误。八、实验心得通过此次试验我理解了汇编语言中编程的基本步骤,掌握了分支结构程序 设计中准确知道操作结果影响的标志位状态和正确的使用无条件转移指令以及 无符号数的比较方法。这个实验,使我认识到直接通过 CPUJ存器地址赋值可以 大大提高效率,并且让我知道要继续练习熟读汇编语言代码的功能及用法。实验二、实验目的

9、1)掌握分支程序的结构;2)掌握分支程序的设计,调试方法;、实验内容设有3个单字节无符号数存放在 BUF开始的缓冲区中,编写一个能将他们 从大到小重新排序的程序。三、算法描述流程图四、实验步骤(1) x、y异号.输入源程序:DATA SEGMENTXDB99YDB-33ZDB0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXCMPX,0/与0进行比较JLL1;x0 转 L1CMPY,0JLL2;y=0,y=0 则 1 一Z ,无条件转EXITJMPEXITL1:CMPY,0;y=0 转 L2JGEL2MOVZ,-1

10、;x0,y0 则-1-Z ,无条件 EXITJMPEXITL2:MOVZ,0;x, y 异号则 0-ZEXIT:MOVAH,4CHINT21HCODEENDSENDSTART2.执行emulate 程序,对源程序进行 调试,生成original source code和emulator:noname.exe_t件,结果无错误。x、y异号时,Z值为0,结果满足题目要求且无错误3.执行run程序,打开程序aux,选择memory,查看地址0710:0000,经验证当DATASEGMENTXDBYDBZDBDATAENDSCODESEGMENTASSUMESTART:MOV(2) x、y同为正1.输

11、入源程序:MOVCMPJLCMPJLMOV1314 0CS:CODE,DS:DATAAX,DATADS,AXX,0/与0进行比较;x0 转 L1Y,0L2;y=0,y=0则1一Z ,无条件转EXITJMPEXITL1:CMPY,0;y=0 转 L2JGEL2MOVZ,-1;x0,y0 则-1-Z ,无条件 EXITJMPEXITL2:MOVZ,0;x, y异号则0TEXIT:MOVAH,4CHINT21HCODEENDSENDSTART2.执行emulate 程序,对源程序进行调试,生成 original source code 和emulator:noname.exe_t件,结果无错误。3.

12、执行run程序,打开程序aux,选择memory,查看地址0710:0000,经验证当 x、y都大于0时,Z值为1,结果满足题目要求且无错误。(3) x、y同为负1.输入源程序:DATASEGMENTXDB-36YDB-12ZDB0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXCMPX,0;x与0进行比较JLL1;x0 转 L1CMPY,0JLL2;y=0,y=0则1 一Z ,无条件转EXITJMPEXITL1:CMPY,0;y=0 转 L2JGEL2MOVZ,-1;x0,ySingle step*run1;或e

13、口 住ela ms: 00711:0000&711:&00007110:07111:07112:184016007Bg 10 07口巨冈caul st dzz n口!nz亡-n-icfil* math. dtbu vlav 电virtu.il dLtvi css virtukl drh v lutlp-sourceUlW11 MO。 0710 MOD WOD 1K10D OODD WOb 5700Hi LU313: 07114: 07115: 07116;07117: 0711S: 07119: 0711A: 0711B: 071ICs 071ID:0711E: 071IF:网货值; 而口落丁

14、汉 CMP b.t00000hlT JL 0LAh CMP b.00001htJL 02ahMOV JMP CMP JNL MOV JMP MOVb.00002bk02Dh b.L00001hl, 028b.00002b, 02Dhb.E00002h J tK-9O123JDAKA CODE ASSUME ETfiRT: H叫 CMP口 B DB DE ENDS SEGMENTCS:CODEsciflenMlTCB|逆】|ver?debua I罂ack I -CtlP -JL MOV.执行run程序,打开程序aux,选择memory,查看地址0710:0000,得到如下 界面:0710:000

15、0update与 tableoooooooo1-rll-l-l-l 1 rl?77777O-O.UOOO o o0000 0010 002C00800040005C OOEC 0070S3E800072190 0000DF 1070C690SO Q0 0000 0715 069090 000000 8EC6 呢9。00 0000 DS06009090 00 00oo 80 02 FF 90 Fd 00 00003E00EB90000000oa-oo oa-oo Ol-EB 05-ce 90-9。 0Q-00 OQ-OO 0Q-000000130690000000a ci ?C so 02 90

16、 00 00 00JO DE 3E no90 加 。口 oo008。01009000 co0000 3E 00 Bid 蚓010 010 00000100AC9。 0000 oa00 007 口CD90 000000=n.n., F. L经验证当x、y异号时,Z值为0,结果满足题目要求且无错误。x、y同为正.执行emulate程序,对源程序进行调试,生成original source code和 emulator:noname.exe_t件,彳马至U如下界面:fBulatqei Tkonaa.E.口耳冈fil t RAth. dtbuc Vi WVirtu.il邙0 I 1jqa& | rel

17、oad | step back |l 卧 -ngle step L_jojcl_i !Ji Btep 比旃x ma: 0JOM)2 Moriginal source code |f |XF4200: FFF4201: FFF4202: CDF423: 21F4206:F4207:F420S:F4209:F420A:F420B:F420C:F420D:F420E:F420F:555355022220RRD-D DDDDDD DDD D D DDDODD ODD aaaaaaaaAAA0000000000 00000000000000000000 0e000000e0。00!5 51010 gFJ

18、OOiOiM41一AAAAAAAAAAAloNTIXxxxxxxxXXX BBBBBBBBBBCO5111JTJUTJ11工工二二二二二二二二 ssssssssssssciflen sobTGB10111213li151617181920212223IP1PVupLl: JGE MOV JflPL2:EXI; CENT CODECHPMOVENDS乙EXL2 Z. EX.执行run程序,打开程序aux,选择memory,查看地址0710:0000,得到如下 界面:仁叵区6710:0000update , WbH 1 hst0710:0000Un QE01 00 0000 00 OQ-OO071

19、0:0010E8 1007 SE 03SO 3E 00-000710:002000 7015 C6 0602 00 01-EB0?10:00300? C8oe 02 ooFF EE O5-C60710:004021 9090 30 9090 30 30-900710:005090 9090 30 90F4 00 00-000710:006000 0000 00 00OD 00 00-nnU?10:00?000 00DO 00 00OD 00 00-00口口口口 Q o on_ OO7C9O n- oO1OCO.O o o 00049。Q uOEnio o o o o3.UB_H-n-n-o o

20、oloon-n-0 08009口口口OEEOOO o o 00309.0o oOCO2-UU o o 07809OOQOo36on-n-oo olo A- o n- D0Rando- Hecess Ke&Dry经验证当x、y都大于0时,Z值为1,结果满足题目要求且无错误x、y同为负1.执行emulate程序,对源程序进行调试,生成 original source code 和emulator:noname.exe_t件,彳马至U如下界面:cbuIatqz nanaa.- imcfilt ri自th dbuc viftv xUrntL virtu.il ivl cas virtu.il drh

21、vOrLcidd0 reload(” 1色色口 backSingle nepstep 比居 ma: 0original source codeF4200: FFF4201: FFF4202: CDF4203: 21H LF4206:F4207:F420S:F4209:F420A:F420B:F420CIF420D:F420E:F420F:D-DDDDDDDDDD DDDDDDDDDDD -aaaaaaaa AAA000000000000000000000000000000 0e000000e0。saal 51010 g1A欠3点旨R_R I. 5553 5502 2220tCIMFil44tO

22、TH inib BIXxxxxxxxXXXBBBBBBBBBBCO1m JTJ1JTJ1 mu二二二一 一二二 sssssssssssT E p p VP-EVP-ITD nLMLnMIGnMEXNDTul23d-E67S9O123LTim 1111122-22s p V D M N c Hv E2.执行run程序,打开程序aux,选择memory,查看地址0710:0000,得到如下 界面:叵区0 Rand。,iLccesis Ke&Dryupdate0710:00000710:0000DC F4FF 00oo oo oo aci-oo oo00 00 00 00 00 000710:001

23、0BS 100? 8ED3 80 3E 00-00 00?C CIE 80 2E 01 000710:002000 7C15 ce06 02 00 01-EB 13SO 3E 01 00 00 7D0710:003007 CS06 0200 FF EE 05-Ce 0602 00 00 E4 4C CD0710:004021 9090 3090 SO 90 90-90 9030 90 90 30 30 900710:005090 9030 3030 F4 00 00-00 0000 00 00 00 00 000710:006000 00DO 0000 00 00 00-00 0000 00

24、00 00 00 000719:007000 0000 0000 00 00 00-00 0000 CIO 00 00 00 00j F-n.,) =il. . Lx、y都小于0时,Z值为-1,结果符合题目要求且无错误。六、思考题本程序中判定符号用的是 CMP指令,而用逻辑操作指令也可以。比如,可 以用AND指令,使其进行自身与操作,反映到 SF标志位,还可以用TEST指 令直接测试最高位,并将结果反映到 ZF标志位,然后根据ZF标志位判断。试 用TEST指令编之。答:.输入源程序如下:DATASEGMENTXDB66YDB-100ZDB0DATAENDSCODESEGMENTASSUMECS

25、:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXTESTX,80HJNEL1TESTY,80HJNEL2MOVZ,1JMPEXITL1:TEST Y,80HJEL2MOVZ,-1JMPEXITL2:MOVZ,0EXIT:MOVAH,4CHINT21HCODE ENDSEND START.执 行emulate程序,对源程序进行 调试,生成original source code和 emulator:noname.exe_t件,结果无错误。.执行run程序,打开程序aux,选择memory,查看地址0710:0000,结果如下IRandom Access KeiKDryM

26、t lx0710:0000updateF tablelist0710:0000429C00000710:0010B310078E0710:0020807515C60?10:008007C606020710:0040219090300710-QQSC309Q:30300710-00600000nn000710:00?00000D000QQ 00 00 00-00 00 00 00 00 00 00 00 B D3 F6 06 00-00 30 75 0E F6 06 01 00之 =.,iu- =ri06 02 00 Oi-EB 13 F6 06 Cl 00 80 ?4=n.if =?.00 F

27、F EE 0E-C6 06 02 00 00 B4 iC CD 90 90 30 30-90 9C 30 90 90 30 90 90!9U F4 00 00-00 00 00 00 CO 00 00 0000 00 00 03-no 叩叩 Q口口 叩口口 口口00 00 00 00-00 00 00 00 00 00 00 OU t经验证运行结果为42 9c 00,即66 -100 0, x、y异号,Z值为0,无错误七、扩展题如果不采用上述方法判断两数的符号,而采用两数异或的方法判断两数的符 号,当两数的符号不相同时,其结果的最高位必定为 1;当两数的符号相同时, 其结果的最高位必定为0;在

28、根据其中一数的符号是正还是负决定两数是正数还 是负数。请做程序完成。(1) x、y同号1.输入源程序:DSEGSEGMENTXDB-3YDB-4ZDB0DSEGENDSCSEGSEGMENTASSUMECS:CSEGDS:DSEGSTART:MOVAX,DSEGMOVDS,AXMOVAL,XMOVBL,YXORAL,BLJSL1JGEL2MOVZ,1JMPEXITL1:MOVZ,1JMPEXITL2:MOVZ,0EXIT:MOVAH,4CHINT21HCSEGENDSENDSTART.执 行emulate程序,对源程序进行 调试,生成original source code和 emulator

29、:noname.exe_t件,结果无错误。.执行run程序,打开程序aux,选择memory,查看地址0710:0000,结果如下I0?10:0000FDFC 00。口 0000 00OCI-OO00 00oo 0000 00 000710:0010E810 07SE OSA0 0000-3AIE 0100 32C3 73 09在 .+f.2 X,0710:0020?D0E C606 Q200 01EE:-OCce os口 2 0001 EB 0E) Ri p 一斤 |0710:0030C606 0200 QQB4 4CCQ-21SO 9090 9090 90 90I !0710:00409。

30、90 9090 9090 9090-90SO 9090 90FA QQ 000710:00500000 0000 0000 00OCi-OO00 0000 0000 00 000710:00600000 0000 0000 00oa-cio00 0000 0000 OQ 000710:00700000 0000 0000 0000-0000 0000 0000 00 003 tableupdate0710:0000Kandern Accbsb*口可(2) x、y异号1.输入源程序:DSEGSEGMENTXDB5YDB-6ZDB0DSEGENDSCSEGSEGMENTASSUMECS:CSEGD

31、S:DSEGSTART:MOVAX,DSEGMOVDS,AXMOVAL,XMOVBL,YXORAL,BLJSL1JEL2MOVZ,1JMPEXITL1:MOVZ,1JMPEXITL2:MOVZ,0EXIT:MOVAH,4CHINT21HCSEGENDSENDSTART2.执行emulate 程序,对源程序进行 调试,生成original source code和emulator:noname.exe_t件,结果无错误。3.执行run程序,打开程序aux,选择memory,查看地址0710:0000,结果如下0 Kandonn 13口北普5 Ehsrjr)1 INPUT cHarActer *t

32、iiSen亡hM界l6hl经验证,运行结果无错误且符合题意六、思考题再求相应地址是,程序中使用了 SHL AL, 1语句,请问这说明了什么?答:“SHL AL,1的命令是指将操作数乘以2,在该程序中,转移指令表中 的每条转移指令代码是由两个字节组成的,将AL寄存器中的数乘以2后再与BX相加,就是对应输入数字的转移指令代码的有效地址。七、扩展题编制程序,判断键盘输入的一个数,若输入1 5,则将该数转换为二进制数存放至RLT单元,若输入其他数则显示输出“ ERROR”。1.输入源程序DATASEGMENTDISDBERROR!$RLTDW0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,1INT21HCMPAL,31HJBMCMPAL,35HJAMANDAL,0FHJMPNM:LEADX,DISMOVAH,9INT21HJMPEXITN:LEABX,TABMOVAH,0DECA

温馨提示

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

最新文档

评论

0/150

提交评论