基本演示1汇编语言实验操作方法一.实验的基本方法(MASM宏汇编子目录下)1.在DEBUG下运行汇编指令或简单小程序在DEBUG提示符下,用汇编命令A:输入汇编指令或简单小程序,用单步命令T 或全程命令G来执行,并检查执行中间结果与最后结果。
2.标准汇编程序上机方法A.建立ASM文件,用全屏幕编辑文件或其他编辑文件建立扩展名为ASM的源程序.B.用MASM(或ASM)产生扩展名为OBJ目标文件。
C.用LINK产生扩展名为EXE可执行文件。
D.在DEBUG下,把文件调入内存,调试程序。
E.在DOS下可直接执行扩展名为EXE的文件。
(详细过程)二.汇编语言的工作环境.A.硬件环境IBM-PC及其系列机内存256K字节以上外存:硬盘或至少一个软驱CPU:80586以上显示器:单色或彩色显示器键盘:标准ASCII码键盘B.软件环境编缉程序:或其他编缉程序汇编程序:MASM.EXE或ASM.EXE连接程序:LINK.EXE调试程序:或DEBUG.EXEA命令在命令A后跟地址,按回车输入程序,可以连续输入,当按下回车后,就退回到DEBUG下。
T命令T命令为跟踪命令。
G命令该地址指定了运行的起始地址,如不指定则从当前的cs:ip开始运行EDIT.EXE怎样生成.exe文件生成.obj文件基本演示2DEBUG命令的使用A.程序调用命令C>DEBUG[D:][PATH][FILENAME[.EXT]][PARM1][PARM2]其中,文件名是被调试文件的名字。
如未键入文件名。
可用DEBUG命令N和L 把需要文件装入存储器后再调试。
D指定驱动器,PATH为路径,FILENAME为文件名,PARM为命令参数B.显示存储单元命令-D[ADDRESS]或;ADDRESS地址-D[RANGE];RANGE范围C.修改存储单元内容命令-E ADDRESS[LIST]D.检查和修改寄存器内容命令-R[REGISTER NAME];Register name寄存器名字E.汇编命令-A[ADDRESS]F.跟踪命令-T[=ADDRESS][VALUE];Value变量值G.运行命令-G[=ADDRESS][ADDRESS2[ADDRESS3]H.反汇编命令-U[ADDRESS]-U[RANGE]I.命名命令-N FILESPECS[FILESPECS]FILESPECS的格式可为[D:][PATH]FILENAME[.EXT]J.装入命令-L[ADDRESS[DRIVE SECTOR SECTOR]];DRIVE SECTOR磁盘扇区K.写命令W ADDRESS DRIVE SECTORL.退出命令-QD命令D命令为显示存储单元的命令,.表示不可显示的字符如果只指定首地址,则显示从首地址开始的80个字节的内容。
如果完全没有指定地址,则显示上一个D命令的显示的最后一个单元后的内容。
E命令当输入d100时,段地址中0100的首地址是B8,当键入e010066时,段地址中0100的值变为66R命令R命令为检查和修改寄存器内容的命令,如图所示为显示CPU内所有寄存器内容和标志位的状态。
在命令A后跟地址,按回车输入程序,可以连续输入,当按下回车后,就退回到DEBUG 下。
T命令T命令为跟踪命令。
该地址指定了运行的起始地址,如不指定则从当前的cs:ip开始运行U命令U命令为反汇编命令,从指定地址开始,反汇编32个字节,如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。
N命令l命令先用n命令命名,再打入l命令,就掉入了该程序,按t或者u命令就可以查看了。
w命令先用n命令在d盘命名一个文件名为a1.asm的文件,设置其长度bx和cx,(bx 表示高八位,cx表示低八位,介入命令w200,即从偏移地址200写入内存。
Q命令退出DEBUG,返回DOS。
本命令并无存盘功能,如需存盘应先使用命令。
基本演示3汇编语言指令练习1.实验目的A.掌握DEBUG中汇编命令A,反汇编命令U,单步命令T,显示存储单元命令D,修改存储器单元命令E,修改与显示寄存器单元命令R,退出Q等命令的用法.B.熟悉汇编中传送、逻辑等指令。
C.了解指令不同的寻址方式,注意规定或限制使用的寄存器如:双操作数指令中,源操作数和目的操作数的地址不能同时为存储器地址,段跨越前缀不能使用CS,操作对象是地址还是地址中的内容,指令隐含使用的寄存器..2.实验要求A.对DEBUG中A,U,T,D,E,R,Q等命令按不同用法进行练习.B.汇编中传送、逻辑等指令.3.实验指令内容A.MOV.PUSH.POP.B.AND.OR.XOR.TEXT.C.ADD.SUB.D.MUL.DIV.4.实验准备A.认真阅读本实验指导.B.按实验内容要求,理解指令功能,编写不同寻址方式的指令清单5.实验步骤A.在DOS提示符下,在MASM子目录下,按DEBUG及回车.B.在DEBUG提示符下,按A进入小汇编,输入源指令.C.用U反汇编,检查输入源指令是否正确,用T或G,调试与运行指令.D.检查指令运行结果,用E,R检查与修改内存,寄存器内容.E.重复B.C.D过程.6.实验报告A.目的,要求,内容及算法思想.B.不同寻址方式,注意规定或限制使用的寄存器.C.指令清单.D.实验心得.Mov输入mov ax,2000,按回车输入T命令,则ax中的内容变为2000,当输入mov ax,6666后,在输入T命令,ax中的内容变为6666push输入push ax后,堆栈寄存器地址减一,就是原来sp为FFEE,执行进栈指令后,在输入T命令,就可以看见sp变为FFECpop出栈指令pop就是使堆栈寄存器加一,就是说,原来执行进栈指令后,sp变为FFEC,指令出栈指令后sp变为FFEEand开始用T命令可以看见ax中的内容为00e3,输入and bx,0,使bx和0进行逻辑与,在用T命令查看,就可以看见则bx的内容变为0003Or先将ax的内容变为21,执行or ax,10逻辑或命令后,用T命令就可以看见ax 中的内容就变为了0031Xor先将ax赋为11,执行xor ax,03异或指令,用T命令就可以看见ax中的内容变为0012Test先使bx的内容变为0e3,执行测试命令test,这时用T命令就可以看见bx中的内容就变成了00e3add开始dx中的内容为3742,输入add dx,1111时,用T命令就可以看见dx的内容变为4853Sub开始dx中的内容变为3000,输入sub dx,1001时,用T命令就可以看见dx中的内容变为1FFFmul开始时ax中的值是2,bl中的值是3,当执行mul bl时,用T命令就可以看见ax中的值就变成了6Div开始时ax中的值是10,bl中的值是2,当执行div bl时,用T命令就可以看见ax中的值就变成了5基本演示4顺序程序设计1.实验目的掌握汇编语言程序设计的基本步骤,分析问题,确立算法,画出程序流程图.说明流程图中各功能的含义和表示法。
分配工作单元和存储空间。
根据程序算法流程选择合适的指令编制汇编语言源程序。
本实验着重掌握顺序程序的设计基本方法和技巧。
2.实验要求A.程序要结构化:简明、易读和易调试B.执行速度较快C.占用存储空间较少3.实验内容A:基本题:编一段程序,在内存中自SQTAB(0200H)地址开始的连续10个单元中存放0-9的平方值。
要求利用简单的查表法NUM(0210)单元中指定数(0-9)的平方值,并将所求平方值存入RESULT(0211)单元。
B:选做题:将一字节压缩BCD码转换为二个ASCII码。
4.实验准备A.认真阅读本实验指导B.按实验内容要求,确定算法,画流程图,编写程序.5.实验步骤A.首先进入编辑器,输入源程序,检查正确后,用MASM汇编成目标文件,用连接成可运行文件,若正确无误,则用DEBUG调入内存,进行调试.B.调试与运行程序:用单步,短点,连续等方法调试与运行程,根据存储器,寄存器与标志位的内容与变化.如:SP,IP,CF,SF,ZF,OF,I等,检查指令结果,程序中间结果及程序运行最后结果是否正确,排除软件错误,直到达到本实验目的为止.C.记录程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.6.实验报告A.目的,要求,内容及算法思想.B.程序流程图,程序清单,重要部位说明.如:重要的指令功能,重要的程序段功能.C.程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.D.实验心得及有意义的建议基本演示5分支程序设计1.实验目的掌握分支程序设计的原理和方法,重点掌握各种分支程序中形成和判断条件而产生的程序段的设计方法和技巧.2.实验要求A.如何产生条件B.如何对条件进行判断C.如何实现分支3.实验内容A.基本题:用地址表法,完成下面要求的多分支程序的设计。
根据MODE单元中的模式字(0-7)分别转向L0-L7标号处执行。
L0-L7处分别完成显示‘0’-‘7’字符既:当MODE=0时,转L0标号,完成显示‘0’.当MODE=1时,转L1标号,完成显示‘1’.当MODE=2时,转L2标号,完成显示‘2’.当MODE=3时,转L3标号,完成显示‘3’.当MODE=4时,转L4标号,完成显示‘4’.当MODE=5时,转L5标号,完成显示‘5’.当MODE=6时,转L6标号,完成显示‘6’.当MODE=7时,转L7标号,完成显示‘7’.B.选做题:统计学生成绩,分别统计低于60分,60—69分,70—79分,80-89分,90-99分及100分的人数,并存放到S5,S6,S7,S8,S9及S10单元中。
4.实验准备A.认真阅读本实验指导B.按实验内容要求,确定算法,画流程图,编写程序.5.实验步骤A.首先进入编辑器,输入源程序,检查正确后,用MASM汇编成目标文件,用连接成可运行文件,若正确无误,则用DEBUG调入内存,进行调试.B.调试与运行程序:用单步,短点,连续等方法调试与运行程序,根据存储器,寄存器与标志位的内容与变化.如:SP,IP,CF,SF,ZF,OF,I等,检查指令结果,程序中间结果及程序运行最后结果是否正确,排除软件错误,直到达到本实验目的为止.C.记录程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.6.实验报告A.目的,要求,内容及算法思想B.程序流程图,程序清单,重要部位说明.如:重要的指令功能,重要的程序段功能.C.程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.D.实验心得及有意义的建议.基本演示6循环程序设计1.实验目的掌握循环程序设计的原理和方法,重点掌握循环程序结构的形式和常用循环程序的控制方法和技巧.2.实验要求A.置循环参数的初值B.循环体构成C.如何实现循环控制3.实验内容A.基本题:计数1+2+3+...+100B.选做题:把BX寄存器内的二进制数用十六进制数的形式在屏幕上显示出来.4.实验准备A.认真阅读本实验指导B.按实验内容要求,确定算法,画流程图,编写程序.5.实验步骤A.首先进入编辑器,输入源程序,检查正确后,用MASM汇编成目标文件,用连接成可运行文件,若正确无误,则用DEBUG调入内存,进行调试.B.调试与运行程序:用单步,短点,连续等方法调试与运行程序,根据存储器,寄存器与标志位的内容与变化,如:SP,IP,CF,SF,ZF,OF,I等,检查指令结果,程序中间结果及程序运行最后结果是否正确,排除软件错误,直到达到本实验目的为止.C.记录程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.6.实验报告A.目的,要求,内容及算法思想.B.程序流程图,程序清单,重要部位说明.如:重要的指令功能,重要的程序段功能.C.程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.D.实验心得及有意义的建议基本演示7子程序设计1.实验目的掌握子程序设计的原理和方法,重点掌握子程序结构的形式和常用子程序的控制方法和技巧.采用子程序设计以增加程序的可读性,有利于程序的模块化和自顶向下的设计方法的实现.2.实验要求A.子程序定义及相对应的调用方法.B.子程序设计时需建立子程序的功能说明C.子程序现场保护和现场恢复D.子程序的输入参数和输出参数的确定及传递方法,可利用寄存器,内存或堆栈传递参数.E.子程序套调用时,注意任何存放断点和寻找短点进行返回.F.掌握常用DOS系统功能子程序的调用.3.实验内容A.基本题:十进制数到十六进制数转化程序.程序要求从键盘取得一个十进制数,然后以十六进制形式在屏幕上显示出来.B.选做题:利用堆栈传递参数,实现对两个已定义的数组分别求和.4.实验准备A.认真阅读本实验指导B.按实验内容要求,确定算法,画流程图,编写程序.5.实验步骤A.首先进入编辑器,输入源程序,检查正确后,用MASM汇编成目标文件,用连接成可运行文件,若正确无误,则用DEBUG调入内存,进行调试.B.调试与运行程序:用单步,短点,连续等方法调试与运行程序,根据存储器,寄存器与标志位的内容与变化,如:SP,IP,CF,SF,ZF,OF,I等,检查指令结果,程序中间结果及程序运行最后结果是否正确,排除软件错误,直到达到本实验目的为止.C.记录程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.6.实验报告A.目的,要求,内容及算法思想B.程序流程图,程序清单,重要部位说明.如:重要的指令功能,重要的程序段功能.C.程序入口参数与出口参数,重要的指令结果,程序中间结果及程序运行最后结果.D.实验心得及有意义的建议.基本演示8实验演示为了让大家能更好的了解汇编语言实验我们做了两个实验演示演示一:怎样将.ASM文件生成.EXE文件。