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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(汇编语言程序设计上机实验指导书文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言程序设计上机实验指导书文档格式.docx

1、(3)A5H,79H 011E 002C(4)1284H,5678H 68FC BC0C(5)A758,347FH DBD7 72097、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。R(寄存器)命令:R Register name 当R命令后面不带任何参数时,显示出13个16位寄存器的内容,同时又显示出标志寄存器各位状态。最后显示出下一条要执行指令地址及指令内容。检查寄存器命令:R标志位显示 1 0CF CY NCZF ZR NZSF NG PLAF AC NAOF OV NVPF PE PODF DN UPIF EI DI8、用R命令将A

2、X,BX内容改写为1050H及23A8H。当R命令后面带参数时,显示出该寄存器的内容,同时又可进行修改。实验报告要求:1、16进制数加减法手算结果及实验结果2、思考DEBUG命令的使用结果及自编程序运行记录 (列出自编程序)。实验二 内存操作数及寻址方法1、DEBUG命令:G,N,W,L及Q。2、8088系统中数据在内存中的存放方式和内存操作数的几种寻址方式。3、8088指令:INC,DEC,LOOP,INT 3,INT 20H,寄存器SI,DI。4、8088汇编语言伪操作:BYTE PTR,WORD PTR。5、求累加和程序和多字节加减法程序。实验内容和步骤:一、内存操作数及各种寻址方式使用

3、:内容:MOV AX,1234 MOV 1000,AXMOV BX,1002MOV BYTE PTRBX,20MOV DL,39INC BXMOV BX,DLDEC DLMOV SI,3MOV BX+SI,DLMOV BX+SI+1,DLMOV WORD PTRBX+SI+2,2846步骤:1)用A命令键入上述程序,并用T命令逐条运行。2)每运行一条有关内存操作数的指令,用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。注意D命令显示结果中右边的ASCII字符及双字节数存放法。思考:有关指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。二、求累加和程序:程序:MOV B

4、X,1000MOV CX,10SUB AX,AXLOP: ADD AL,BXADC AH,0J: LOOP LOPINT 31)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。2)用命令N AA将此程序命名为文件AA(文件名可任取)。3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址)4)用命令W 100将此程序存到AA命名的磁盘文件中。5)用命令Q退出DEBUG。6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序。若调入DEBUG时忘了加AA文件名,可用N命令和L

5、命令将文件调入。7)用E命令在内存地址1000H处键入16个数字8)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值。9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错。10)用G命令使程序运行到结束,检查AX的值是否正确。三、多字节加法程序。MOV DI,1000MOV CX,8MOV SI,2000CLC MOV AL,SIADC DI,ALINC SIINC DILOOP LOPINT 201)用命令键入此程序2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一

6、个8字节加数,均为低字节在前面。3)用G命令运行此程序,并用D命令检查其结果(存放在哪里?),是否正确?4)将INT 20H指令改为INT 3,有何区别?若这条指令不加,行不行?四、自编程序:用16位减法指令编一个32位(4字节)数减法程序,两个源操作数及结果存放地址同上题。调试并做记录。1、各项实验结果记录。2、自编程序原稿及调试后修正稿,写出原稿错在那里。实验三 汇编语言程序设计工具与上机过程1、掌握常用工具软件 MASM和LINK的使用。2、伪指令: SEGMENT,ENDS;ASSUME,END;OFFSET,DUP。3、利用的 1号功能实现键盘输入的方法。4、了解.EXE文件和.CO

7、M文件的区别及用INT 21H 4C号功能返回系统的方法。;*data segmentmessage db This is a sample program of keyboard and displydb 0dh,0ah,Please strike the key!,0dh,0ah,$data endsstack segment para stack stackdb 50 dup(?)stack endscode segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,axmov dx,offset messagemov

8、ah,9int 21hagain: mov ah,1cmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndand al,11011111bnd: mov dl,almov ah,2jmp againexit: mov ah,4chcode endsend start ;*实验步骤:1、用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。3、用TYPE命令显示第1步产生的.LST文件。4、用LINK将.OBJ文件

9、连接成可执行的.EXE文件。5、在DOS状态下运行LINK产生的.EXE文件。即在屏幕上显示标题并提示你按键。每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。按ESC键可返回DOS。若未出现预期结果,用DEBUG检查程序。实验报告:1、汇编,连接及调试时产生的错误,其原因及解决办法。2、思考:1)若在源程序中把INT 21H的H省去,会产生什么现象?2)把 INT 21H 4CH号功能改为 INT 20H,行不行?实验四 数据串传送和查表程序1、堆栈:堆栈指示器SP和堆栈操作指令PUSH、POP。2、段寄存器和物理地址计算。3、查表法和查表指令XLAT。4、数据串传送程序和数据串传送

10、指令MOVS、STOS及重复前辍REP。5、循环指令ROL、逻辑与指令AND和清方向位指令CLD。6、伪操作指令DB。实验内容及步骤:一、利用查表方法把DX的内容(16进制数)转换成ASCII码:1、用A命令键入下列程序:MOV DI,2000MOV CX,4 PUSH CXMOV CL,4ROL DX,CLPOP CXMOV AL,DLAND AL,OFXLAT ;换码指令CLD ;方向标志置0STOSB ;(DI)(AC)INT 202、用A命令在1000H处键入下列ASCII码并用D命令检查之:DB 0 1 2 3 4 5 6 7 8 9 A B C D E F用D命令检查时注意左边的A

11、SCII码值和右边的字符。3、用R命令给DX送一个四位的16进制数(例7F8E)。4、用T命令逐条运行这程序到LOOP指令处,观察并记录每次运行结果,特别是SP和堆栈内容(用D命令检查)5、用G命令将此程序运行到结束,并用D命令检查2000H处所转换的结果。可注意屏幕右边的ASCII字符与DX是否一致。二、数据串搬家程序:MOV SI,1000MOV DI,1500MOV CX,0F MOV AL, SIMOV DI,AL2、用A命令DB伪指令在1000H键入下列字符串:IBM_PC COMPUTER3、用G命令运行此程序,并用D命令检查目的地址处的字符与源串是否一致。4、若此程序中的目的地址

12、改为1002H,再运行此程序,看能不能把1000H开始的字符串搬到1002H开始的地方去?修改程序以做到这一点。三、段寄存器概念及字符串传送指令练习:MOV SI,0MOV DI,0MOV AX,1000MOV DS,AXMOV AX,1500MOV ES,AXCLD ;REP MOV SB2、用A命令DB伪指令在1000:0000处键入字符串IBM_PC COMPUTER,并用D命检查之3、用D命令检查0F00:1000处内容,看是否一样。为什么?4、用G命令运行此程序,检查目的地址1500:0000处内容。并记下DS与ES值。5、修改此程序,使ES与DS为同一值,以减少一条指令,而源物理地

13、址和目的物理地址(是多少?)仍和原来一样。1、各项实验记录和思考题。2、要求你修改的程序的清单(修改后)和调试记录。实验五 屏幕字符显示程序一、实验目的:1、8088指令: JMP,ROR,XOR,HLT。2、利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法。3、直接向视频RAM(VRAM)送ASCII码进行屏幕显示的方法。4、微机的ASCII码表及控制字符。5、命令(.COM)文件及使用方法。6、利用CTRL+BREAK退出程序的方法及局限性。二、实验内容及步骤:1、利用INT 21 0AH号功能调用显示字符串。、用A命令在100H处键入下列程序:MOV AH, 9MOV D

14、X,110INT 21、用A命令在110H处键入下列字符串的ASCII码:DB This is a sample!、用N命令和W命令将此程序(包括数据区)存入文件名为AA.COM的磁盘文件中。(存入前BX:CX必须置为文件长度值)。、用Q命令退出DEBUG。、在DOS命令下打AA,运行此程序,即在屏幕上显示字符串,若不出现,用DEBUG检查程序有无错误。2、利用INT 21H 2号功能显示字符:XOR DL,DLMOVCX,100MOV AH,2INC DLPUSH CXDELY:MOV CX,0 LOOP JPOP CXLOOP DELY、用G命令运行程序,即在屏幕上依次缓慢的显示256个A

15、SCII字符。仔细观察每个字符,和ASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同?、按CTRL+BREAK退出此程序,若一次不行可多做几次。3、直接向VRAM送ASCII码显示字符MOV AX,B000XOR AL,ALXOR BX,BXMOV CX,100 MOV BX,ALINC AL、用N命令和W命令将此程序存入BB.COM文件中。(一定要先存入!、用G命令运行此程序,仔细观察每一个ASCII码显示结果,并和字符表及上一道程序运行情况进行对照,其控制字符区(07-0DH)显示结果和INT 21H 2号功能调用有何不同?4、自编一个程序,要求显示AX的内容,即能显示A

16、X=xxxx。调试时AX的内容可用R命令赋值,也可用MOV指令赋值。三、实验报告要求:1、各项实验记录及观察体会。2、利用INT 21H显示和直接向VRAM送ASCII码显示方法在显示结果上有什么不同?3、自编程序草稿及调试结果。实验六 条件转移指令JZ,JNZ,JC,JNC,CMP,SHR。2、程序:用字符搜索法确定字符串长度。3、程序:16进制数化为ASCII码的一般方法。一、用字符搜索法确定字符串长度:1、用A命令在100H开始的内存处键入下列程序:JMP STARTThis is the program to measurethe length of a string!START: M

17、OV BX,102MOV AL,24XOR CL,CL CMP AL,BXJZ EXITINC CLJMP LOPEXIT: INT32、用G命令运行此程序,并检查CL的统计长度是否与你自己统计的实际长度是否一样?二、16进制数转化ASCII码的一般方法(显示内存内容)1、用A命令在100H处键入下列程序:MOVSI,0MOVBL,10 MOVDL,SIMOVCL,4SHRDL,CLCMPDL,0AJC J1ADD DL,7J1: ADD DL,30MOV DL,SIAND DL,0FCMP DL,0AJC J2J2:MOV DL,20DEC BLJNZ LOP2、用N,W命令将此程序用CC.

18、COM文件名存入磁盘。3、用Q命令退出DEBUG。4、在DOS命令状态下直接运行CC.COM命令文件,应在屏幕上显示出内存从0000H开始的16个字节的内容,若有错误,用DEBUG检查之。5、自编程序:修改上面程序,使除以16进制数形式显示内存内容外,还能在其右边显示该16进制码所对应的ASCII字符,07-0D的控制字符用.代替。1、自编程序及调试后的正确程序和结果。2、实验体会。实验七 子程序调用方法1、掌握利用堆栈传递参数的子程序调用方法。2、掌握子程序递归调用方法。3、过程调用伪指令: PROC,ENDP,NEAR和FAR。4、8088指令: CALL,RET,RET n。5、利用RE

19、T指令退出EXE文件的方法。一、利用堆栈传递参数的子程序调用。(求累加和)stack segment stackdb 256 dup(0);*ary1 db 1,2,3,4,5,6,7,8,9,10count1 equ $-ary1sum1 dw ?ary2 db 10,11,12,13,14,15,16,17,18count2 equ $-ary2sum2 dw ?*main segmentmain,ds:start proc farpush dsxor ax,axpush axmov ax,datamov ds,axmov ax,count1lea ax,ary1call far ptr

20、summov ax,count2lea ax,ary2retstart endpmain ends*proce segment procesum procfarmov bp,spmov cx,bp+6mov bx,bp+4adn: add al,bxadc ah,0inc bxloop adnmov bx,axret 4sum endpproce ends1、输入,汇编并将此程序连接成EXE文件。2、用DEBUG的断点命令和T命令运行此程序,观察并记录每次过程调用及进出栈指令前后(带的语句)的SP和堆栈内容。3、记录最后结果:SUM1,SUM2的段及偏移地址和它们的内容。二、子程序递归调用(求

21、阶乘)。db 100h dup(?*resul dw ?main proc far push dssub ax,axmov ax,datamov ax,5call factmov resul,axfact procand al,aljne iiamov al,1iia: push axdec alx2: pop cxmul clfact endpmain endp1、将程序输入,汇编并连接成EXE文件。2、用DEBUG的断点和T命令检查并记录每层递归嵌套过程的堆栈和AL内容。3、修改源程序,将阶乘数 3 改为本程序的最大允许值(是多少?),重新汇编连接之。用DEBUG运行并记录RESUL单元内容。4、若要在DOS命令下直接运行并显示阶乘结果(16进制形式),试修改程序并调试运行。1、实验记录。2、自编程序。3、体会和意见。实验八 多重循环程序1、掌握多重循环程序和排序程序设计方法。2、掌握带符号数的比较转移指令:JL,JLE,JG,JGE3、伪指令 EQU 及操作符 的使用。4、 COM文件的要求和生成过程。org 100hcodemain:jmp startarr

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

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