ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:44.21KB ,
资源ID:11118995      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11118995.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(南昌大学微型计算机原理与接口技术实验报告全.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

南昌大学微型计算机原理与接口技术实验报告全.docx

1、南昌大学微型计算机原理与接口技术实验报告全(此文档为word格式,下载后您可任意编辑修改!)实验一:汇编语言程序设计开发环境实验目的1、熟悉汇编语言设计开发环境2、巩固对程序基本结构的认识3、学会使用debug命令查看结果实验步骤:1、打开电脑在系统选择界面,选择DOS操作系统2、通过键盘输入TC,进入TC操作界面。在TC操作见面,新建文件,将实验程 序写入文件中,然后保存为.ASM文件。退出TC操作界面3在DOS操作界面,写入MASM,和刚才的ASM文件名。产生目标文件。4、调用 link文件,链接目标文件,产生可执行文件5、再键入debug 12.exe(12为对应文件的文件名)来运行程序

2、。我们的目的是要察看我们程序的运行结果,因此我们希望的动程序运行后应停在返回DOS以前,为此我们可先用反汇编命令U来确定我们所要的断点地址。编写汇编程序,实现Z=X+;程序如下:DATA SEGMENT X DB 18H Y DB 19H Z DB ?DATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATASTART: PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV AL,XADD AL,Y DAA MOV Z,ALRETMAIN ENDPCODE ENDSEND START先退出DOS系统。

3、先输入MASM 12.ASM后,看有没有错误,如果有错误就返回去修改程序,反复调试,直到没有错误为止。再输入LINK 12.OBJ再输入DEBUG 12.exe再按U。设置好断点以后再输入G加断点地址。实验结果-u1489:0000 1E PUSH DS 1489:0001 2BC0 SUB AX,AX 1489:0003 50 PUSH AX 1489:0004 B88814 MOV AX,1488 1489:0007 8ED8 MOV DS,AX 1489:0009 A00000 MOV AL,0000 1489:000C ADD AL,0001 1489:0010 27 DAA 1489

4、:0011 A20200 MOV 0002,AL 1489:0014 CB RETF 1489:0015 D1E3 SHL BX,1 1489:0017 D1E3 SHL BX,1 1489:0019 8B360406 MOV SI,0604 1489:001D EBA2 JMP FFC1 1489:001F 90 NOP -u1489:0020 C746FC0000 MOV WORD PTR BP-04,0000 1489:0025 EB1F JMP 0046 1489:0027 90 NOP 1489:0028 8A4608 MOV AL,BP+08 1489:002B 2AE4 SUB

5、AH,AH 1489:002D 50 PUSH AX 1489:002E 8B5EFC MOV BX,BP-04 1489:0031 D1E3 SHL BX,1 1489:0033 D1E3 SHL BX,1 1489:0035 8B7604 MOV SI,BP+04 1489:0038 FF7002 PUSH BX+SI+02 1489:003B FF30 PUSH BX+SI 1489:003D E854FE CALL FE94 -g0014AX=1437 BX=0000 CX=0025 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=1488 ES=

6、1478 SS=1488 CS=1489 IP=0014 NV UP EI PL NZ AC PO NC 1489:0014 CB RETF -d1488:00001488:0000 18 19 37 00 00 00 00 00-00 00 00 00 00 00 00 00 .7.1488:0010 1E 2B C0 50 B8 88 14 8E-D8 A0 00 00 02 06 01 00 .+.P.1488:0020 27 A2 02 00 CB D1 E3 D1-E3 8B 36 04 06 EB A2 90 .6.1488:0030 C7 46 FC 00 00 EB 1F 90

7、-8A 46 08 2A E4 50 8B 5E .F.F.*.P.1488:0040 FC D1 E3 D1 E3 8B 76 04-FF 70 02 FF 30 E8 54 FE .v.p.0.T.1488:0050 83 C4 06 FF 46 FC 8B 46-06 39 46 FC 72 DA 5E 8B .F.F.9F.r.1488:0060 E5 5D C3 90 55 8B EC 56-C4 5E 04 26 80 7F 04 03 .U.V.&.1488:0070 75 07 26 80 7F 0A 00 74-37 A1 58 27 39 06 36 22 u.&.t7.X

8、9.6-q实验心得:这是我第一次在pc机上运用DOS系统来编程,有很多不懂,感觉很陌生。在进入TC,和文件的保存,以及程序的编译都感觉很陌生。但是有了这一次的接触,以后会更轻松。这次主要是熟悉了汇编的环境,对于程序来说,只要熟悉了汇编语言的基本环境,本次程序比较简单。运行的结果很顺利。实验二、字符串的传送一、 实验目的:1. 掌握变量的基本使用方法。2. 掌据字符串的输入传送方法的使用。3. 掌握数据段的定义方式二、实验内容编程实现将X中的40个字符存储在Y中,并调试程序。三、实验程序如下:DATA SEGMENTX DB 40 DUP(B)DATA ENDSEXTRA SEGMENTY DB

9、 40 DUP (?)EXTRA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATA,ES:EXTRASTART: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV AX,EXTRA MOV ES,AX LEA SI,X LEA DI,Y CLD MOV CX,40 REP MOVSB RETMAIN ENDPCODE ENDSEND START四、实验结果先退出DOS系统。先输入MASM 12.ASM后,看有没有错误,如果有错误就返回去修改程序,反复调试,直到没有错误为止。再输入LINK

10、 12.OBJ再输入DEBUG 12.exe再按U。设置好断点以后再输入G加断点地址。查看数据段是输入D1488:0000显示结果:-u148C:0000 1E PUSH DS 148C:0001 2BC0 SUB AX,AX 148C:0003 50 PUSH AX 148C:0004 B88814 MOV AX,1488 148C:0007 8ED8 MOV DS,AX 148C:0009 B88A14 MOV AX,148A 148C:000C 8EC0 MOV ES,AX 148C:000E 8D360000 LEA SI,0000 148C:0012 8D3E0000 LEA DI,

11、0000 148C:0016 B91300 MOV CX,0013 148C:0019 FC CLD 148C:001A F3 REPZ 148C:001B A4 MOVSB 148C:001C CB RETF 148C:001D DA5E8B FICOMP DWORD PTR BP-75 -u148C:0020 E55D IN AX,5D 148C:0022 C3 RET 148C:0023 90 NOP 148C:0024 55 PUSH BP 148C:0025 8BEC MOV BP,SP 148C:0027 56 PUSH SI 148C:0028 C45E04 LES BX,BP+

12、04 148C:002B 26 ES: 148C:002C 807F0403 CMP BYTE PTR BX+04,03 148C:0030 7507 JNZ 0039 148C:0032 26 ES: 148C:0033 807F0A00 CMP BYTE PTR BX+0A,00 148C:0037 7437 JZ 0070 148C:0039 A15827 MOV AX,2758 148C:003C CMP 2236,AX -g001cAX=148A BX=0000 CX=0000 DX=0000 SP=FFFC BP=0000 SI=0013 DI=0013 DS=1488 ES=14

13、8A SS=1488 CS=148C IP=001C NV UP EI PL ZR NA PE NC 148C:001C CB RETF -d1488:00001488:0000 50 45 52 53 4F 4E 41 4C-20 43 4F 4D 50 55 54 45 PERSONAL COMPUTE1488:0010 52 24 00 00 00 00 00 00-00 00 00 00 00 00 00 00 R$.1488:0020 50 45 52 53 4F 4E 41 4C-20 43 4F 4D 50 55 54 45 PERSONAL COMPUTE1488:0030 5

14、2 24 00 00 00 00 00 00-00 00 00 00 00 00 00 00 R$.1488:0040 1E 2B C0 50 B8 88 14 8E-D8 B8 8A 14 8E C0 8D 36 .+.P.61488:0050 00 00 8D 3E 00 00 B9 13-00 FC F3 A4 CB DA 5E 8B .1488:0060 E5 5D C3 90 55 8B EC 56-C4 5E 04 26 80 7F 04 03 .U.V.&.1488:0070 75 07 26 80 7F 0A 00 74-37 A1 58 27 39 06 36 22 u.&.

15、t7.X9.6-d148a:0000148A:0000 50 45 52 53 4F 4E 41 4C-20 43 4F 4D 50 55 54 45 PERSONAL COMPUTE148A:0010 52 24 00 00 00 00 00 00-00 00 00 00 00 00 00 00 R$.148A:0020 1E 2B C0 50 B8 88 14 8E-D8 B8 8A 14 8E C0 8D 36 .+.P.6148A:0030 00 00 8D 3E 00 00 B9 13-00 FC F3 A4 CB DA 5E 8B .148A:0040 E5 5D C3 90 55

16、 8B EC 56-C4 5E 04 26 80 7F 04 03 .U.V.&.148A:0050 75 07 26 80 7F 0A 00 74-37 A1 58 27 39 06 36 22 u.&.t7.X9.6148A:0060 72 14 BE 36 22 8B 1C FF-04 2B D8 D1 E3 D1 E3 8B r.6.+.148A:0070 36 04 06 EB 10 90 BE 36-22 8B 1C FF 04 D1 E3 D1 6.6.-q实验心得:这次是做字符串传送的实验这套程序在课堂上讲过,所以编程序的时候也比较轻松。在调试阶段要注意,本次调试我的断点设置出

17、错,所以导致了输出结果的错误,这个问题以后应该注意,要知道自己所需要的断点在哪。不能搞错,否则输出的结果就会有问题。还有就是输入程序的时候要小心,不能按错键,如果按错了键,在编译的时候会错,要返回去tc中改程序,调试程序的时候耐心也是很重的实验三、键盘输入与回显实验目的:1、熟悉DOS功能的9号功能,从键盘输入并在显示器上显示字符串2、熟悉DOS功能调用指令INT 21H 实验原理:1、单字符输入功能号1、7和8都可以接收键盘输入的单字符串,输入字符以ASCII码形式 存放在累加器AL中。其中7号和8号功能无回显。2、字符串输入输入字符串可以通过调用DOS功能的0AH号功能实现。3、单宇符显示

18、在显示器上显示的内容都是字符形式,如果是数字,则一定是其对应的ASCII 码。要将一个字符串送到显示器显示,可调用DOS功能的2、6、9号功能实现。其中2、6用于显示单个字符,功能9显示一个字符帀。4、字符中显示要在从示器上显示字符串,可调用DOS功能的9号功能,该功能要求被显示的字符串必须“$”以字符作为结束符,否则会引起屏幕混乱。5、返回DOS用 4CH号功能返回DOS的程序段:MOV AH,4CHINT 21H 实验内容:从键盘读入一串字符,在字符串尾插入一个“$”,并显示该字符。实验程序如下:DATA SEGMENTBUFSIZE DB 50ACTLEN DB ?CHARS DB 50

19、 DUP(20H)DATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATASTART: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX LEA DX,BUFSIZE MOV AH,0AH INT 21H XOR CX,CX MOV CL,ACTLEN MOV DX,OFFSET CHARS MOV BX,DX ADD BX,CX MOV BYTE PTRBX,$ MOV AH,09H INT 21H MOV AH,02H MOV DL,0AH INT 21H MOV DL,0DH INT 2

20、1H MOV AH,09H LEA DX,CHARS INT 21H MOV AH,4CH INT 21H MAIN ENDP CODE ENDS END START实验结果:随机输入一串不超过50个字符的字符串,按enter键之后,字符串会重新显示。在屏幕上。屏幕显示为:1D08:0000 1E PUSH DS 1D08:0001 2BC0 SUB AX,AX 1D08:0003 50 PUSH AX 1D08:0004 B8041D MOV AX,1D04 1D08:0007 8ED8 MOV DS,AX 1D08:0009 8D160000 LEA DX,0000 1D08:000D B

21、40A MOV AH,0A 1D08:000F CD21 INT 21 1D08:0011 33C9 XOR CX,CX 1D08:0013 8A0E0100 MOV CL,0001 1D08:0017 BA0200 MOV DX,0002 1D08:001A 8BDA MOV BX,DX 1D08:001C 03D9 ADD BX,CX 1D08:001E C60724 MOV BYTE PTR BX,24 -U1D08:0021 B409 MOV AH,09 1D08:0023 CD21 INT 21 1D08:0025 B402 MOV AH,02 1D08:0027 B20A MOV

22、DL,0A 1D08:0029 CD21 INT 21 1D08:002B B20D MOV DL,0D 1D08:002D CD21 INT 21 1D08:002F B409 MOV AH,09 1D08:0031 8D160200 LEA DX,0002 1D08:0035 CD21 INT 21 1D08:0037 B44C MOV AH,4C 1D08:0039 CD21 INT 21 1D08:003B 00740D ADD SI+0D,DH 1D08:003E FF360406 PUSH 0604 -G37CHENLIHUAGDAKSGCHENLIHUAGDAKSGAX=0924

23、 BX=0011 CX=000F DX=0002 SP=FFFC BP=0000 SI=0000 DI=0000 DS=1D04 ES=1CF4 SS=1D04 CS=1D08 IP=0037 NV UP EI PL NZ AC PE NC 1D08:0037 B44C MOV AH,4C -Q实验心得体会: 本次试验因为还没有学过,对DOS系统的功能的调用很陌生。所以本次编程的时候感觉很痛苦,编程的时候对着书看了很长时间,才慢慢的知道实验程序的编写。在实验室悟了好长时间才悟懂DOS功能的调用显示和地址的灵活用法。我忘了一“$”,所以电脑一直在那里响。最后我加上“$”符号后,程序才顺利执行完。

24、这次实验做得很艰难,一开始有很多迷惑,经过实践之后迷惑就消除了。实验四:子程序设计(计算N!)实验目的:1、通过调用求N!的子程序求一个数的阶乘2、掌握子程序的设计方法,调用方法,返回方法3、学会一种算法:递归调用实验内容:堆栈保护及递归算法,用递归算法计算5!,实验程序如下: DATA SEGMENTN DW 5RESULT DW ?DATA ENDSSTACKSEG SEGMENTDW 128 DUP(0)TOS LABEL WORDSTACKSEG ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATA,SS:STACKSEGSTART:M

25、OV AX,STACKSEG MOV SS,AX MOV SP,OFFSET TOS PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV BX,N PUSH BX CALL FACT POP RESULT RETMAIN EDNPFACT PROC NEAR PUSH AX PUSH BP MOV BP,SP MOV AX,BP+6 CMP AX,0 JNZ FACT1 INC AX JMP EXITFACT1:DEC AX PUSH AX CALL FACT POP AX MUL BP+6EXIT:MOV BP+6,AX POP BP PO

26、P AX RETFACT ENDPCODE ENDS END START实验结果先退出DOS系统。先输入MASM 12.ASM后,看有没有错误,如果有错误就返回去修改程序,反复调试,直到没有错误为止。再输入LINK 12.OBJ再输入DEBUG 12.exe再按U。设置好断点以后再输入G加断点地址。查看数据段是输入D:DS 0结果显示:-u13E1:0000 B8D113 MOV AX,13D1 13E1:0003 8ED0 MOV SS,AX 13E1:0005 BC0001 MOV SP,0100 13E1:0008 1E PUSH DS 13E1:0009 2BC0 SUB AX,AX

27、13E1:000B 50 PUSH AX 13E1:000C B8D013 MOV AX,13D0 13E1:000F 8ED8 MOV DS,AX 13E1:0011 8B1E0000 MOV BX,0000 13E1:0015 53 PUSH BX 13E1:0016 E80500 CALL 001E 13E1:0019 8F060200 POP 0002 13E1:001D CB RETF 13E1:001E 50 PUSH AX 13E1:001F 55 PUSH BP -u13E1:0020 8BEC MOV BP,SP 13E1:0022 8B4606 MOV AX,BP+06 1

28、3E1:0025 3D0000 CMP AX,0000 13E1:0028 7504 JNZ 002E 13E1:002A 40 INC AX 13E1:002B EB0A JMP 0037 13E1:002D 90 NOP 13E1:002E 48 DEC AX 13E1:002F 50 PUSH AX 13E1:0030 E8EBFF CALL 001E 13E1:0033 58 POP AX 13E1:0034 F76606 MUL WORD PTR BP+06 13E1:0037 894606 MOV BP+06,AX 13E1:003A 5D POP BP 13E1:003B 58

29、POP AX 13E1:003C C3 RET 13E1:003D 7421 JZ 0060 13E1:003F 8B9E72FF MOV BX,BP+FF72 -g001dAX=13D0 BX=0003 CX=014D DX=0000 SP=00FC BP=0000 SI=0000 DI=0000 DS=13D0 ES=13C0 SS=13D1 CS=13E1 IP=001D NV UP EI PL NZ NA PE NC 13E1:001D CB RETF -d13d0:000013D0:0000 03 00 78 00 00 00 00 00-00 00 00 00 00 00 00 00 .13D0:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .13D0:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .13D0:0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .13

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1