汇编语言上机实验指导书.docx

上传人:b****2 文档编号:295398 上传时间:2023-04-28 格式:DOCX 页数:35 大小:30.25KB
下载 相关 举报
汇编语言上机实验指导书.docx_第1页
第1页 / 共35页
汇编语言上机实验指导书.docx_第2页
第2页 / 共35页
汇编语言上机实验指导书.docx_第3页
第3页 / 共35页
汇编语言上机实验指导书.docx_第4页
第4页 / 共35页
汇编语言上机实验指导书.docx_第5页
第5页 / 共35页
汇编语言上机实验指导书.docx_第6页
第6页 / 共35页
汇编语言上机实验指导书.docx_第7页
第7页 / 共35页
汇编语言上机实验指导书.docx_第8页
第8页 / 共35页
汇编语言上机实验指导书.docx_第9页
第9页 / 共35页
汇编语言上机实验指导书.docx_第10页
第10页 / 共35页
汇编语言上机实验指导书.docx_第11页
第11页 / 共35页
汇编语言上机实验指导书.docx_第12页
第12页 / 共35页
汇编语言上机实验指导书.docx_第13页
第13页 / 共35页
汇编语言上机实验指导书.docx_第14页
第14页 / 共35页
汇编语言上机实验指导书.docx_第15页
第15页 / 共35页
汇编语言上机实验指导书.docx_第16页
第16页 / 共35页
汇编语言上机实验指导书.docx_第17页
第17页 / 共35页
汇编语言上机实验指导书.docx_第18页
第18页 / 共35页
汇编语言上机实验指导书.docx_第19页
第19页 / 共35页
汇编语言上机实验指导书.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

汇编语言上机实验指导书.docx

《汇编语言上机实验指导书.docx》由会员分享,可在线阅读,更多相关《汇编语言上机实验指导书.docx(35页珍藏版)》请在冰点文库上搜索。

汇编语言上机实验指导书.docx

汇编语言上机实验指导书

汇编语言上机实验指导书

一、概述

上机实验总学时为18学时,其中综合性和设计性实验至少为8学时。

实验要求:

1、上机前作好充分准备,包括程序框图、调试步骤、测试方法、对运行结果的分析等。

2、上机时要遵守实验室的规章制度,爱护实验设备。

要熟悉与实验相关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。

在程序的调试过程中,有意识地学习及掌握DEBUG程序的各种操作命令,以便掌握程序的调试方法及技巧。

3、为了更好地进行上机管理,要求用硬盘(注:

F盘下)存储程序,以避免文件丢失。

此外,要求实验者按以下形式命名实验文件:

学号.扩展名

4、程序调试完后,须由实验辅导教师在机器上检查运行结果。

5、每个实验完成后,应写出实验报告。

实验报告:

实验报告的要求如下:

1封面。

封面应包括:

课程名称、实验序号、名称、专业、班级、姓名、同组实验者、实验时间。

2实验报告编写要规范。

应包括:

实验名称、目的、内容、原理、实验步骤、实验记录、数据处理(或原理论证、或实验现象描述、或结构说明等)。

③实验报告应附有实验原始记录和源程序清单。

加强实践能力的培养

实验目的不光是为了验证书本理论,更重要的是对实践能力的培养。

其中包括:

实际调试程序的能力,例如修改程序参数的能力,查看结果的能力,设置断点调试运行的能力等;开发汇编语言应用程序的能力,例如应用有关汇编软件的能力,进行系统调用和BIOS功能调用的能力,进行模块程序设计的能力等。

对某一问题用不同的程序实现的能力,例如我们为每个实验提供了参考程序(或程序段),目的是让每个实验者参照样板程序将实验成功地实现,在掌握其方法后,自己改变程序或本分改变程序加以实现。

实验一利用DEBUG调试程序调试程序段(必做)

1.        实验目的:

(1)     熟悉DEBUG有关命令的使用方法

(2)     利用DEBUG掌握有关指令的功能

(3)     利用DEBUG运行简单的程序段

2.        实验内容

(1)     进入和退出DEBUG程序

(2)     学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。

对于U命令、N命令、W命令等,也应试一下。

(3)     利用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。

3.        实验准备

(1)     仔细阅读有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。

(2)     作为例子,准备用A命令,输入在显示器上显示字符“S”的系统调用程序段。

(3)     阅读将AX左移9位的程序段。

4.        实验步骤

(1)     在DOS提示符下,进入DEBUG程序。

(2)     在DOS目录下启动DEBUG。

(3)     详细记录每一步所用的命令,以及查看结果的方法和具体结果。

5.        实验报告要求

(1)     如何启动和退出DEBUG程序。

(2)     整理每个DEBUG命令使用的方法,实际示例及执行结果。

(3)     启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?

实验二分支程序实验(必做)

1.        实验目的:

(1)     掌握分支程序的设计方法

(2)     掌握利用DEBUG修改参数、检查结果的方法。

(3)     掌握汇编语言源程序的编辑、汇编、连接及调试过程。

2.        实验内容

(1)     编写一个程序,显示AL寄存器中的两位十六进制数

(2)     编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。

3.        实验准备

(1)     编写实验内容要求的两个程序。

(2)     写出调试以上程序,即修改程序参数,检查结果的操作方法。

(3)     熟悉源程序汇编、连接命令的使用方法即要回答的内容。

4.        实验步骤

(1)     用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。

(2)     对其进行汇编及连接,产生.EXE文件。

(3)     对.EXE文件进行调试运行。

a.      用DEBUG调试运行,学会修改AL内容的方法。

b.      对DSPKEY.EXE键入不同的字符,分别进行调试。

c.      在MS-DOS下运行这两个.EXE文件。

5.        实验报告要求

(1)     画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。

(2)     说明本实验是如何利用DEBUG进行调试的。

6.        参考程序清单

(1)     显示AL中两位十六进制数程序:

;DISPHEX.ASM

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAL,3EH

MOVBL,AL

MOVDL,AL

MOVCL,4

SHRDL,CL

CMPDL,9

JBENEXT1

ADDDL,7

NEXT1:

ADDDL,30H

MOVAH,2

INT21H;显示高位ASCII码

MOVDL,BL

ANDDL,0FH

CMPDL,9

JBENEXT2

ADDDL,7

NEXT2:

ADDDL,30H

MOVAH,2

INT21H;显示低位ASCII码

MOVAH,4CH

INT21H

CODEENDS;返回DOS

ENDSTART

(2)     显示键入字符程序

;DISPKEY.ASM

CODESEGEMENT

ASSUMECS:

CODE

START:

MOVAH,1

INT21H;等待键入字符,送AL

CMPAL,0DH;是否是回车符?

JZDONE;是则转DONE退出程序

CMPAL,’0’

JBNEXT

CMPAL,’9’

JACHARUP

MOVDL,AL

MOVAH,2

INT21H

JMPSTART

CHARUP:

CMPAL,41H

JBNEXT

CMPAL,5AH

JACHRDN

DISPC:

MOVDL,’C’

MOVAH,2

INT21H

NEXT:

JMPSTART

CHRDN:

CMPAL,61H

JBNEXT

CMPAL,7AH

JANEXT

JMPDISPC

DONE:

MOVAH,4CH

INT21H

CODE:

ENDS

ENDSTART

实验三循环程序实验(必做)

1.        实验目的:

(1)     掌握循环程序的设计方法

(2)     进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。

(3)     学会针对不同的问题,选用不同的组织循环的方法。

2.        实验内容

(1)     编写一个程序,显示AL寄存器中的两位十六进制数

(2)     编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。

3.        实验准备

(1)     编写实验内容要求的两个程序。

(2)     写出调试以上程序,即修改程序参数,检查结果的操作方法。

(3)     熟悉源程序汇编、连接命令的使用方法即要回答的内容。

4.        实验步骤

(1)     用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。

(2)     对其进行汇编及连接,产生.EXE文件。

(3)     对.EXE文件进行调试运行。

a.      用DEBUG调试运行,学会修改AL内容的方法。

b.      对DSPKEY.EXE键入不同的字符,分别进行调试。

c.      在MS-DOS下运行这两个.EXE文件。

5.        实验报告要求

(1)     画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。

(2)     说明本实验是如何利用DEBUG进行调试的

实验四子程序实验

(一)(必做)

本实验的目的在于让读者掌握同一模块调用的方法。

1. 实验目的

(1)      掌握主程序与子程序之间的调用关系及调用方法。

(2)      掌握子程序调用过程中近程调用与远程调用的区别。

(3)      掌握通过堆栈转送参数的方法。

2. 实验内容

(1)      将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。

要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示.

(2)      编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符’b’的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符”b”.子程序返回字符"b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数).

3. 实验说明

(1)      第一个实验程序用子程序的近程调用实现。

由于在调用HEXASC子程序时,子程序又调用了DISP子程序,这叫子程序的嵌套调用。

实验过程中可以从堆栈的内容看到两个子程序的返回地址值。

由于是近调用,地址值只包括返回地址的段内偏移量。

在每个子程序的执行中,检查CS值是不变的。

(2)      第二个程序是利用远调用的方法调用子程序的。

在远调用情况下,主程序与子程序处在不同的逻辑代码段中,可在子程序执行中查看CS值,它与主程序中的CS值是不同的。

子程序调用后,堆栈中保留了返回地址的段地址及段内偏移量。

(3)      第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。

一段是将参数(此处是串首址TABLE,串的长度N及待统计的字符“b”)顺序压如堆栈,在子程序调用后,通过BP指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。

有关该方法的原理此处不再介绍。

4. 实验准备

(1)      预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图。

(2)      熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。

5. 实验步骤

(1)      编辑、汇编两个源程序,生成相应的可执行文件(。

EXE)

(2)      用DEBUG的R命令,T命令或G命令和D命令检查远程调用及近程调用时堆栈的变化。

特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。

(3)      检查程序执行的结果是否正确。

6. 实验报告要求

(1)      分析远程调用与近程调用的区别,在用DEBUG有关命令观察时,执行过程有何不同。

(2)      说明用堆栈传送参数的过程及其具体方法。

(3)      分析实验结果及所遇到问题,并说明解决的方法。

7.参考程序清单

(1)码型转换程序清单:

;CONV.ASN

DATASEGMENT

BUFDB0ABH,0CDH,0DEH,01H,02H,03H

DB3AH,4BH,5CH,6FH

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,10

LEABX,BUF

AGAIN:

MOVAL,[BX]

CALLHEXASC

INCBX

LOOPAGAIN

MOVAH,4CH

INT21H

HEXASCPROCNEAR

MOVDL,AL

PUSHCX

MOVCL,4

SHRDL,CL

POPCX

CALLDISP;显示高位HEX数

MOVDL,AL

ANDDL,0FH

CALLDISP

RET

HEXASCENDP

DISPPROP

CMPDL,9

JBENEXT

ADDDL,7

NEXT:

ADDDL,30H

MOVAH,2

INT21H;显示

RET

DISPENDP

CODEENDS

ENDSTART

(2)统计并显示某键入字符的个数的程序:

:

COUNTER.ASM

DATASEGMENT

CHARDB‘b’

BUFDB50H,?

50HDUP(?

DATAENDS

MCODESEGMENT

ASSUMECS:

MCODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

LEADX,BUF

MOVAH,9

]INT21H

LEASIBUF

MOVCL,[SI+1]

MOVCH,0;CX中为字符串长度

INCSI

INCSI;SI指向串首址TABLE

MOVAL,CHAR

MOVAH,0;AX中为待查字符

PUSHSI

PUSHCX

PUSHAX;参数送堆栈

CALLCHECK

POPAX:

统计个数在AL中

MOVDL,CHAR

MOVAH,2

INT21H

MOVDL,AL

ANDDL,0FH

CMPDL,9

JBENEXT

ADDDL,7

NEXT:

ADDDL,30H

MOVAH,2

INT21H;显示统计个数

MOVAH,4CH

INT21H

MCODEENDS

SCODESEGMENT

ASSUMECS:

SCODE

CHECKPROCFAR

PUSHBP

MOVBP,SP

MOVSI,[BP+10]

MOVCX,[BP+8]

MOVAX,[BP+6]

XORAH,AH

AGAIN:

CMPAL.[SI]

JNENEXT1

INCAH

NEXT1:

INCSI

LOOPAGAIN

MOVAL,AH

MOV[BP+10],AX

POPBP

RET4

CHECKENDP

ENDSTART

实验五 子程序实验

(二)(选做)

本程序的目的在于使读者掌握模块间调用子程序的编写方法.

1.实验目的

(1) 了解多模块程序设计方法.

(2) 学会使用PUBLEC和EXTRN伪指令解决模块间的符号(如变量名,标号等)通信问题.

2. 实验内容

(1)编写一个子程序,将主程序设定的内存中字符串的小写字母转换成大写字母并显示出来.主程序用另一个模块编写.

(2)编写一个子程序,将主程序指定的字符所在的地址返回给主程序,字符串与主程序在同一个模块.

3.实验准备

(1)仔细阅读教材中有关模块间通信的方法及模块程序设计的方法.

(2)弄清伪指令PUBLIC及EXTRN的功能及用法.

4.实验步骤

(1)分别对实验1和实验2的主、子模块进行汇编,在连接时,将它们装配成一个以.EXE为扩展名的可执行文件.观察汇编及连接过程中有无错误.

(2)对.EXE文件进行调试及运行.

(3)将实验1中的原字符串改为由键盘输入,然后由子模块将源串中的小写字母转换为大写字母,并将源串与转换后的两个字串分两行显示出来(设键入字串长度小于80个字符).

5.实验报告要求

(1)对源程序清单,画出相应的程序流程图.

(2)扼要总结多模块程序的特点和编写方法.

6.参考程序清单

转换字符串小写字母为大写字母的程序清单:

;EXCHAR.ASM为主模块的文件名

EXCHAR.DNTOUP:

FAR

PUBLIC  STRING1,STRING2

DATA    SEGMENT

STRING1 DB‘THISISABOOK’,‘$’

STRING2 DB 80DUP(?

DATA    ENDS

CODE    SEGMENT

          ASSUMECS:

CODE,DS:

DATA

START    MOV AX,DATA

         MOV  DS,AX

         CALL DNTOUP

         MOV  AH,4CH

         INT    21H

CODE   ENDS

         END  START

DNTOUP。

ASM为子模块的文件名

PUBLIC  DNTOUP

EXTRN  STRING1:

BYTE,STRING2:

BYTE

CODE   SEGMENT

DNTOUP PROC FAR

         MOV  BX,0

CYCLE:

MOV  AL,STRING1[BX]

        CMP  AL,24H  ;是否是STRING1结尾

        JZ  DONE    ;是“$”,转DONE

CMP AL,61H ;是小写字母么?

JB   NEXT    ;不是转NEXT

CMP AL,7AH

JA   NEXT

SUB AL,20H  ;转为大写字母

NEXT:

   MOV STRING2[BX],AL

          INC BX

          JMPCYCLE

DONE:

  MOV AL。

‘$’

          MOV STRING2[BX],AL ;不一个$

          MOV DL,0DH

          MOV AH,2

          INT  21H

          MOV DL,0AH

          INT  21H      ;显示回车,换行

          LEA DX,STRING1

          MOV AH,9     

INT   21H    ;显示源串内容

          MOV  DL,OAH

          MOV  AH,2

          INT   21H        ;回车换行

          MOV  DX,OFFSETSTRING2

          MOV  AH,9

          INT   21H       ;显示转换后的大写串

          RET

DNTOUP  ENDP

CODE    ENDS

          END

(2)找指定字符,并返回地址植的程序清单

  ;MAING。

ASM为主模块程序名

EXTRN FINDC:

FAR

PUBLIC STRN

DATA   SEGMENT

STRN   DB‘LINKDISPLAYSUBROUTING$’

ADDR  DW?

DATA   ENDS

CODE  SEGMENT

       ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

       MOVDS,AX

       MOV AH,1

       INT  21H

       CALL FINDC

MOV ADDR,DI

MOV AH,4CH

INT   21H

CODE     ENDS

          END  START

;FINDC。

ASM为子模块程序名

PUBLIC   FINDC

EXTRN   STRN:

BYTE

CODE    SEGMENT

          LEA  DI,STRN

AGAIN:

 CMPBYTE PTR[DI],‘$’

          JZ DONE

          CMP AL,[DI]

          JNZ  NEXT

DONE1:

  RET

NEXT:

   INC DI

         JMP  AGAIN

DONE1:

  MOV DI,0FFFFH  ;找不到返回0FFFFH

         JMP  DONE1

FINDC   ENDP

CODE    ENDS

          END

(3)如由键盘输入字符串,则可在程序1的主模块DATA段中加一行提示信息IMAGE:

IMAGE DB‘INPUTASTRINGPLEASE:

$’然后在主模块的CALL指令前插入以下程序段

         LEA  DX,IMAGE

         MOV  AH,9

         INT  21H

         LEA  DX,STRING2+1

         MOVAH,0AH

         INT   21H          ;将键入串存入STRING2

         LEA  SI,STRING2+2

         MOV  CL,0

         LEA   DI,STRING1

AGAIN:

 MOV AL,[SI]

         MOV [DI],AL

         INC SI

         INC DI

         LOOPAGAIN

         MOVBYTEPTR[DI],‘$’  ;补一个$

说明:

此处先将键入字串存入STRING2,然后再将其字串部分传送到STRING1中,当然在定义STRING2时,应为:

STRING2 DB 80,?

80DUP(?

)。

 

实验六 字符处理程序实验(必做)

1.实验目的

(1)熟悉串操作指令的功能与应用

(2)掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序。

2.实验内容

(1)字符串统计。

自STRN开始的存储区中,有一个字符串,统计其中含有小写字母的个数,将统计结果以两位十进制数显示在屏幕上。

(2)在给定的字符串中,删除重复的字符,其余的字符向前递补。

3.实验准备

(1)熟悉字符处理的方法和字符处理程序的设计;

(2)认真预习有关串操作的指令极其寻址方式的特点,能够正确使用串操作指令,并准备好数据。

(3)按正常的方法将删除字符程序编成子程序,规定子程序的入口和出口参数。

4.实验步骤

(1)用1号系统调用从键盘键入一个字符串,然后统计其中小写字母的个数。

程序每次执行,都能得到不同的结果。

(2)实验2可参考教材第五章练习10的解法,但要编写一个在同一个字符串中删

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2