《汇编语言程序设计》实验教学大纲.doc_第1页
《汇编语言程序设计》实验教学大纲.doc_第2页
《汇编语言程序设计》实验教学大纲.doc_第3页
《汇编语言程序设计》实验教学大纲.doc_第4页
《汇编语言程序设计》实验教学大纲.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

汇编语言程序设计实验教学大纲课程号:080503101301 课程类别:专业基础课 适用专业:计算机科学与技术专业课程总学时:34 实验学时:17 大纲编写人: 编写时间:2010年6月18日【实验目标要求】 汇编语言程序设计是计算机科学与技术专业必修的专业基础课程。汇编语言程序设计实验的目标是学习汇编语言程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法,汇编语言程序实验的内容与计算机硬件特性联系紧密。通过上机实验的学习,使学生不仅能加深理解和巩固理论课所学的知识,而且还能了解计算机的底层软件的工作过程,为今后学习后续课程打好良好的基础。【实验学习要求】 认真阅读IBM-PC汇编语言程序设计教材中与实验相关的章节内容,提前做好实验预习,做到在每个实验前明确实验目的、掌握实验的基本内容及操作方法;在实验中正确使用实验设备,认真观察、分析实验结果;实验后要根据要求做好总结,上交实验报告。具体要求如下: 1.上机前,要作好充分准备,包括程序框图、源程序清单、调试步骤、测试方法、对运行结果的分析等。 2.上机时,要熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序、调试程序)的使用方法;在程序调试过程中,有意识的学习及掌握Debug的各种操作命令,以便掌握程序的调试方法及技巧;程序调试完后,须由实验辅导教师在机器上检查运行结果。 3.上机后,应写出实验报告,及时总结。 4.遵守实验室的规章制度,爱护实验设备。 【实验计划】 实验序号实验项目内容学时实验一IBM-PC寻址方式及DEBUG的使用3实验二熟悉指令系统3实验三建立运行汇编语言程序3实验四循环程序设计2实验五分支程序设计2实验六子程序设计2实验七I/O程序设计2【实验教材及主要参考资料】 教材: 1.IBM-PC汇编语言程序设计(第二版),沈美明、温冬蝉编著,清华大学出版社,2001.8。 2.IBM-PC汇编语言程序设计实验教程,沈美明、温冬蝉、张赤红编著,清华大学出版社,2008.2。 【实验任务】 实验一、IBM-PC寻址方式及DEBUG的使用实验目的: 1.熟悉DEBUG的功能,运行并掌握其常用命令。 2.使用DEBUG,通过数据传送指令观察IBM-PC机各种寻址方式的区别。 实验内容: 1. DEBUG的加载及其常用命令(A、U、R、D、E、T、P、G、Q)的使用情况。(注意:微机进入DEBUG状态下之后,一切立即数和地址数据均被默认为十六进制数,在输入时数的后面不加后缀“H”。) 2.将数据段中的两个数求和,结果保存在数据段中。源程序、机器语言程序如下:CS:0100 Al 00 00MOV AX,0000CS:0103 03 06 02 00ADD AX,0002CS;0107 A3 04 00MOV 0004,AX CS:010A CB RETF数据段内容如下:DS:0000 2301 2500;两个已知数 3.在Debug中编制简单的汇编程序片断,并调试运行,得出结果。 实验主要步骤: 1.在DOS或Windows的命令行窗口执行命令Debug.exe,进入Debug程序环境,熟悉Debug各个命令的用法。 2. 实验步骤(1)用E命令键人上述机器语言程序和数据段的初值。E DS:000 2301 2500E DS:006 2A 2A 2A (2A为*,是为便于查看数据段内容而设置)E CS:100 A1 00 00 03 06 02 00E CS:107 A3 04 00 CB(2)用D命令检查数据段、代码段内容。D DS:0D CS:100(3)用T命令逐条执行上述程序,注意观察每条指令执行后相应寄存器的变化。(4)用U命令反汇编本程序。U 100 10A(5)用R命令修改IP的内容为0100重新执行上述程序。R IP显示:IP 010A:0100(6)用G命令运行程序。G =CS:0100 107观察:IP AXG =CS:0100 10A观察:IP AX 3自己试着写段程序:-A 10016C6:0100 DB123456789016C6:010A CLD16C6:010B MOV SI,10016C6:010E MOV DI,20016C6:0111 MOV CX,A16C6:0114 REP MOVSB16C6:0116-G =10A 116;运行上述程序(起始地址10AH,结束地址116H)。-D 100 L A;显示DS:100开始10个字节内容16C6:0100 31 32 33 34 35 36 37 38-39 30 1234567890-D ES:200 L A显示ES:100开始10个字节内容16C6:0200 31 32 33 34 35 36 37 38-39 30 12345678904.写出实验报告。 实验二、熟悉指令系统实验目的: 1.熟悉8088/8086的指令书写格式、功能。 2.能熟练运用数据传递、算术、逻辑三类指令。 实验内容: 1.用DEBUG调试程序功能编程序计算(W(XY+Z540)X。其中X、Y、Z、W均为16位带符号数,要求上式计算结果的商存人AX寄存器中,余数存人DX寄存器。掌握算术指令的用法。 2.用DEBUG编程并查看逻辑指令的运行结果,掌握逻辑指令的用法。 3.熟悉其它几组指令的功能和用法,并区分字、字节操作。 实验主要步骤: 1.预先编制程序片段,实现(W(XY+Z540)X,将计算结果的商存人AX寄存器中,余数存人DX寄存器。 参考程序代码如下:DATA SEGMENTX DW 1200HY DW 0034HZ DW 0F045HW DW 034AHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,XIMUL YMOV CX,AXMOV BX,DXMOV AX,ZCWDADD CX,AXADC BX,DXSUB CX,540SBB BX,0MOV AX,WCWDSUB AX,CXSBB DX,BXIDIV XMOV AH,4CHINT 21HCODE ENDSEND START2.可以在Debug程序中使用E命令为变量X、Y、Z、W设置初值。 3.使用A命令汇编程序片段,并用G或T命令执行,用R或D命令查看结果。 4.使用A命令汇编几条逻辑指令,并运行,查看结果。 5.写出实验报告。 实验三、建立运行汇编语言程序实验目的: 1.掌握汇编语言程序格式及其它命令的作用。 2.掌握汇编、连接、运行汇编程序的全过程,并能检查修攙程序简单错误。 实验内容: 1.编写程序,比较两个字符串STRINGl和STRING2所含的字符是否相同。若相同,则显示Match;否则,显示No match。2.编辑、汇编、连接这个汇编语言源程序,形成.EXE文件。 3.通过DEBUG调试运行该可执行文件,查看运行结果。 实验主要步骤: 1.根据要求编制汇编源程序。 参考程序如下:DATA SEGMENTSTRINGl DB Move the cursor backwardSTRING2 DB Move the cursor backwardMESSl DB Match,13,10,$MESS2 DB NO Match!,13,10,$DATA ENDSPROG SEGMENTASSUME CS:PROG,DS:DATA,ES:DATASTART:MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,STRINGlLEA DI,STRING2CLDMOV CX,25REPZ CMPSBJZ MATCHLEA DX,MESS2JMP SHORT DISPMATCH: LEA DX,MESSlDISP: MOV AH,091NT 21HMOV AH, 4CHINT 21HPROG ENDSEND START2.使用记事本或其它字处理软件(Edit.exe)编辑该源文件。 3.使用Masm、Link程序汇编、连接该文件,形成可执行的.EXE文件。 参考步骤如下:(1)调用全屏幕编辑程序EDlT建立ASM文件。CEDIT输入实验内容1的源程序并以SAMPLE.ASM为文件名将文件存盘。(2)用汇编程序MASM 对源文件SAMPLE.ASM 汇编并产生目标文件SAMPLE.OBJ。CMASM SAMPLE如汇编指示有错误,则需重新调用编辑程序修改程序中的错误,直至汇编通过为止。(3)用连接程序LINK产生执行文件SAMPLE.EXE。CLINK SAMPLE(4)执行程序。可直接从DOS状态执行程序。CSAMPLE显示器上显示出程序的运行结果。Match4.也可以使用Debug调试运行这个.EXE文件,并查看运行结果。对实验内容修改两个字符串的内容,使它们互不相同,再观察程序的运行结果。5.写出实验报告。 实验四、循环程序设计实验目的: 1.加深对循环程序的理解。 2.能构造出正确的循环结构并能实现较复杂的算法。 实验内容: 1.编制程序,要求如下:从键盘接收一个四位的16进制数,在终端上显示与它等值的二进制数。 实验主要步骤: 1.根据要求,画出程序框图,写出汇编源代码。 参考程序如下:Begin: MOV BX,0 ;用于存放四位的16进制数 MOV CH,4 MOV CL,4INPUT: SHL BX,CL ;将前面输入的数左移4位 MOV AH,1 ;从键盘取数 INT 21H CMP AL,30H ;0吗? JB INPUT ;不是0F的数重新输入 CMP AL,39H ; 是09吗? JA AF ;不是,转AF的处理 AND AL,0FH ;转换为:0000B1001B JMP BINARYAF: AND AL,1101 1111B ;转换为大写字母 CMP AL,41H ;又F吗? JA INPUT ;不是AF的数重新输入 AND AL,0FH ;转换为1010B1111B ADD AL,9BINARY: OR BL,AL ;将键盘输入的数进行组合 DEC CH JNZ INPUT MOV CX,16 ;将16位二进制数一位位地转换成ASCII码显示DISP: MOV DL,0 ROL BX,1 RCL DL,1 OR DL,30H MOV AH,2 ;进行显示 INT 21H LOOP DISP STOP: RET2.上机编辑源程序,并汇编、连接、调试运行,查看结果。 3.写出实验报告。 实验五、分支程序设计实验目的: 1.加深对分支程序的理解,掌握分支程序的结构。熟悉运算类指令对标志位的状态影响以及标志位状态的表示方法;掌握条件转移、无条件转移指令的使用方法。2. 掌握分支程序设计、编写、调试和运行的方法。 实验内容: 1.试编写小程序:对键盘输入的小写字母用大写字母显示出来。参考程序段如下:Begin:MOV AH,1 ;从键盘输入一个字符 INT 21H CMP AL,a ;输入字符z吗? JA STOP SUB AL,20H ;转换为大写字母或AND AL,1101 1111B也可以 MOV DL,AL ;显示一个字符 MOV AH,2 INT 21H JMP BeginSTOP: RET2.编制程序统计学生成绩。要求如下:设有10个学生的成绩分别为56、69、84、82、73、88、99、63、100和80分。试编制程序分别统计低于60分、6069分、7079分、8089分、9099分及100分的人数存放到s5、s6、s7、s8、s9及s10单元中。这一题目的算法很简单,成绩分等部分采用分支结构,统计所有成绩则用循环结构完成。 实验主要步骤: 1.根据要求,画出程序框图如下图所示,然后写出汇编源代码。 开 始 初始化计数单元 初始化循环计数值初始化首地址取一个成绩 Y60?S5+1 NY70?S6+1 NY80?S7+1 S7+1 NY90?S8+1 S8+1 NN=100?S9+1 YS10+1 修 改 地 址 N 循环结束? Y 结 束程序框图2.上机编辑源程序,并汇编、连接、调试运行,查看结果。 参考程序如下:;PROGRAM TITLE GOES HEREresult;*datarea segment ;define data segment grade dw 56,69,84,82,73,88,99,63,100,80 s5 dw 0 s6 dw 0 s7 dw 0 s8 dw 0 s9 dw 0 s10 dw 0datarea ends;*prognam segment ;define code segment;-main proc far ; main part of programassume cs:prognam, ds:datareastart: ; starting execution address; set up stack for return push ds ; save old data segment sub ax,ax ; put zero in AX push ax ; save it on stack; set DS register to current data segment mov ax,datarea ; datarea segment addr mov ds,ax ; into DS register; MAIN PART OF PROGRAM GOES HERE mov s5, 0 ; initialize counter mov s6, 0 mov s7, 0 mov s8, 0 mov s9, 0 mov s10, 0 mov cx, 10 ; initialize loop count value mov bx, offset grade ; initialize first addrcompare: mov ax, bx ; get a result cmp ax, 60 ; 60? jl five cmp ax, 70 ; 70? jl six cmp ax, 80 ; 80? jl seven cmp ax, 90 ; 90? jl eight cmp ax, 100 ; =100? jne nine inc s10 jmp short change-addr nine: inc s9 jmp short change-addr eight: inc s8 jmp short change-addr seven: inc s7 jmp short change-addr six: inc s6 jmp short change-addr five: inc s5change-addr: add bx, 2 loop compare ret ; return to DOSmain endp ; end of main part of program; -prognam ends;* end start ; end assembly3.写出实验报告。 实验六、子程序设计实验目的: 1.掌握子程序设计方法,能合理划分子程序。 2.掌握汇编子程序的定义、调用、返回、参数传递等有关问题的实现,以及运行过程中的堆栈、标志位变化情况。 实验内容: 1. 编写子程序嵌套结构的程序,把整数分别用二进制和八进制形式显示出来。主程序BANDO:把整数变量VAL1存入堆栈,并调用子程序PAIRS;子程序PAIRS:从堆栈中取出VAL1,调用二进制显示子程序OUTBIN,显示出与其等效的二进制数;输出8个空格;调用八进制显示子程序OUTOCT显示与其等效的八进制数;调用输出回车及换行符子程序。 实验主要步骤: 1.画出程序流程图,合理划分子程序,正确区分主程序与各子程序的功能与关系。 2.编制主程序与子程序的源代码。 参考程序如下:DATA SEGMENT VAL1 DW ? CRLF DW 0DH,0AH,$DATA ENDSCODE SEGMENT BANDO PROC FAR ;主程序BANDO ASSUME CS:CODE,DS:DATA START: PUSH DS ;设置返回DOS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX ;给DS赋值 PUSH VAL1 CALL PAIRS RET BANDO ENDP PARIS PROC NEAR ;PARIS子程序 PUSH BP MOV BP,SP PUSH BX MOV BX,BP+4 ;从堆栈中取出VAL1 CALL OUTBIN ;调用二进制显示子程序 MOV CX,8 ;显示8个空格 SPACE: MOV DL, MOV AH,2 INT 21H LOOP SPACE CALL OUTOCT ;调用八进制显示子程序 CALL DISP_CRLF POP BX POP BP RET 2 PARIS ENDP OUTBIN PROC NEAR ;二进制显示子程序 PUSH BX MOV CX,16 ONEBIT:ROL BX,1 MOV DX,BX AND DX,1 OR DL,30H ;转换为ASCII码 MOV AH,2 INT 21H LOOP ONEBIT POP BX RET OUTBIN ENDP OUTOCT PROC NEAR ;八进制显示子程序 ROL BX,1;16位二进制数包含6位八进制数,最高位仅1位 MOV DX,BX AND DX,1 OR DL,30H ;转换为ASCII码 MOV AH,2 INT 21H MOV C

温馨提示

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

评论

0/150

提交评论