新版汇编语言程序设计实验指导书
- 格式:docx
- 大小:305.77 KB
- 文档页数:19
实验一:汇编上机指导及例示一、实验目的●了解汇编语言程序的运行环境和所需的系统程序;二、实验要求●掌握如何编辑、汇编、连接和运行汇编程序;●掌握常用的DEBUG命令。
三、实验原理题:在屏幕上显示一条'THIS IS A SAMPLE PROGRAM OF KEYBOARD AND DISPLAY'提示信息,如从键盘上输入ESC键,则结束程序,如输入的不是大写字母,则在显示器上显示出来,如输入的是大写字母,则转换为小写字母输出。
四、实验设备计算机五、实验步骤1、用用文字编辑工具(常用EDIT或记事本)将源程序输入,其扩展名为.ASM。
2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。
若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。
3、用TYPE命令显示产生的.LST文件。
4、用LINK将.OBJ文件连接成可执行的.EXE文件。
5、在DOS状态下运行LINK产生的.EXE文件。
用于调试程序时的输入格式:DEBUG FILENAME.??? 回车其中FILENAME是主文件名,???是扩展文件名,例如我们在此前已编译好了一个文件,它的名字为:djx.exe 要对它进行调试时就在DOS提示符下打:DEBUG djx.exe 回车,便可见到 '-' 提示符,如无任何提示说明正确,可进行调试按ESC键可返回DOS。
若未出现预期结果,用DEBUG检查程序。
附: 基本debug操作1、显示内存单元的内容:-d [地址] 或 [范围]2、修改内存单元的内容:-e 地址内容表或-e 地址3、显示CPU内部寄存器和标志位状态:-r4、显示和修改某个寄存器的内容:-r 寄存器名5、汇编命令:-a 地址6、逐条指令追踪:-t [=地址] (无地址则执行IP所指示的指令)7、退出debug:-g8、多条指令追踪:-t [=地址] [n]注:该指令从指定地址起执行n条命令后停下来9、运行命令:-g [=地址1] [地址2 [地址3...]]地址1规定了运行起始地址,后面的地址均为若干断点地址10、反汇编命令:(1)-u [地址]该命令从指定地址开始,反汇编32个字节,若省略地址,则从上一个u命令的最后一条指令的下一单元开始显示32个字节(2)-u 范围该命令对指定范围的内存单元进行反汇编如:-u 04ba:0100 0108等价于:-u 04ba:0100 L9下面给出一些常见出错信息,以便查对:1、Register already defined 汇编内部出现逻辑错误2、Unknown symbol type 在符号语句的类型中,有些不能识别的东西3、Symbol is multi-defined 重复定义一个符号4、Symbol not defined 符号没有定义5、Syntax error 语句的语法与任何可识别的语法不匹配6、Symbol is reserved word 企图非法使用一个汇编程序的保留字(例:定义add为一变量)7、Not proper align/combine type SEGMENT参数不正确8、One operand must be const 这是加法指令的非法使用9、Operands must be same or 1 abs 这是减法指令的非法使用10、Already have base register 试图重复基地址11、Illegal size for item 引用的项的长度是非法的,(如:双字移位)12、Illegal register value 指定的寄存器值不能放入“reg”字段13、Must be AX or AL 某些指令只能用AX或AL14、Improper use of segment reg 段寄存器使用不合法(如:mov ds,0)15、Division by 0 or overflow 给出一个用0作除数的表达式16、Value is out of range 数值大于需要使用的17、CS register illeal usage 试图非法使用CS寄存器18、DUP is too large for linker DUP嵌套太长,以至于从连接程序不能得到所要的记录。
汇编语言实验报告题目:子程序设计班级:rbw111姓名:吴德鹏学号:201107092416完成日期:2013.12.22概述:《汇编语言程序设计》实验指导书是非计算机、非电类的其他专业:包括纺织、机械、热能等专业的《汇编语言程序设计》课程配套使用的实验指导。
在理论课的教学中着重介绍微机系统的组成及工作原理,针对INTEL 8088/8086系列介绍相应的指令系统和汇编语言程序设计,介绍了接口的一般概念和CPU与外设交换信息的常用方式的软硬件设计思想。
实验课测重培养学生的汇编语言设计能力及一些简单接口程序设计的方法,训练学生汇编语言程序调试的能力。
通过实验,使学生加深对课堂教学内容的理解,培养学生综合使用微型机的初步能力。
其中实验一、实验二是后续实验的基础,通过该实验,学生应能了解汇编语言源程序的一般格式,熟悉汇编语言程序的上机过程和调试程序的基本方法,重点放在DEBUG调试程序的命令使用方法上。
也可以将实验一、实验二合并为一个实验,按照*实验一的要求进行;实验三、四、五进一步培养学生的各种结构的程序设计能力;实验六主要是简单接口的综合应用,为学生建立一个微机应用系统的概念,使学生通过具体的实例对相关的接口有感性认识,提高学生的实际动手能力和独立解决问题的能力。
教师可以根据专业学时的多少和学生的具体情况来开设实验。
一、实验目的:1.进一步熟悉分支、循环程序设计的方法及用DEBUG调式程序的方法。
2.熟练掌握子程序的参数传递的方式、子程序的嵌套、递归调用及其设计方法和技巧。
3、培养学生创新精神和独立运用所学基本知识和技能分析问题和解决问题的能力。
二、实验属性:显示学生名次表:编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于50字的grade数组中,其中grade+i保存学号为i+1的学生的成绩。
然后根据grade中的学生成绩,把学生名次填入50字的rank数组中,其中rank+i的内容是学号为i+1学生的名次。
目录第一部分汇编语言程序的上机过程 (1)一、建立汇编语言的工作环境 (1)二、在计算机上运行汇编语言的步骤 (1)三、建立ASM文件 (1)四、用MASM程序产生OBJ文件 (3)五、用LINK程序产生EXE文件 (3)六、程序的执行 (3)七、举例 (3)第二部分汇编语言上机调试 (4)一、为何需要调试? (4)二、如何进行调试? (5)第三部分汇编语言上机内容 (8)实验一输出字符串 (8)实验二算术指令综合编程 (8)实验三查找子字符串 (9)实验四信息检索 (9)实验五格式化输出 (9)实验六数组合并 (9)实验七字符统计 (10)实验八字符串排序 (10)第四部分汇编语言实验参考代码 (10)实验一输出字符串 (10)实验二算术指令综合编程 (11)实验三查找子字符串 (12)实验四信息检索 (13)实验五格式化输出 (16)实验六数组合并 (16)实验七字符统计 (18)实验八字符串排序 (21)第一部分汇编语言程序的上机过程一、建立汇编语言的工作环境为运行汇编语言程序至少要在磁盘上建立以下文件:1、编辑程序,如EDIT.EXE2、汇编程序,如MASM.EXE3、连接程序,如LINK.EXE4、调试程序,如必要时,还可建立如CREF.EXE,EXE2BIN.EXE等文件。
二、在计算机上运行汇编语言的步骤1、用编辑程序建立ASM源文件,以ASM作为扩展名2、用汇编程序把ASM文件转换成OBJ文件3、用连接程序把OBJ文件转换成可执行文件4、在DOS提示符下直接键入可执行文件名即可执行该程序三、建立ASM文件建立ASM文件的编辑程序可以是DOS自身带的编辑程序EDIT.EXE,在DOS提示符下键入EDIT命令即可出现EDIT界面,其操作如下:D:\>edit源程序输入完后,以ASM作为扩展名进行保存,假设所保存的文件名为:ex.asm。
ASM源文件的格式1:;定义数据段,如果需要的话,其中segment和ends是一对伪操作,表示段的开始和结束data segment ;数据段开始;定义数据段的主体,如定义变量data ends ;数据段结束;定义附加段,如果需要的话extra segment ;附加段开始;定义附加段的主体,如定义变量extra ends ;附加段结束;定义代码段,必须的code segment ;代码段开始main proc far;程序的主体部分,proc和endp这一对伪操作表示一个程序模块的开始和结束assume ds:data, es:extra, cs:code ;assume 伪操作指定某个段分配给哪个段寄存器start: ;程序的入口地址push ds ;保存原数据段sub ax,ax ;ax寄存器清零,作为数据段0偏移地址push ax ;数据段0偏移地址压入堆栈中mov ax,datamov ds,ax ;把数据段地址装入数据段寄存器dsmov ax,extramov es,ax ;把附加段地址装入附加段寄存器es;自己所要实现的功能源代码在此添加ret ;程序结束后返回DOSmain endp ;程序的主体部分结束code ends ;代码段结束end start ;汇编程序的结束,程序在start处开始执行ASM源文件的格式2:;定义数据段,如果需要的话,其中segment和ends是一对伪操作,表示段的开始和结束data segment ;数据段开始;定义数据段的主体,如定义变量data ends ;数据段结束;定义附加段,如果需要的话extra segment ;附加段开始;定义附加段的主体,如定义变量extra ends ;附加段结束;定义代码段,必须的code segment ;代码段开始main proc far;程序的主体部分,proc和endp这一对伪操作表示一个程序模块的开始和结束assume ds:data, es:extra, cs:code ;assume 伪操作指定某个段分配给哪个段寄存器start: ;程序的入口地址mov ax,datamov ds,ax ;把数据段地址装入数据段寄存器dsmov ax,extramov es,ax ;把附加段地址装入附加段寄存器es;自己所要实现的功能源代码在此添加mov ax,4c00h ;程序结束后返回DOSint 21hmain endp ;程序的主体部分结束code ends ;代码段结束end start ;汇编程序的结束,程序在start处开始执行该步以及以下几步在电脑上一边讲解,一边演示给同学们看。
新版汇编语言程序设计实验指导书(精)汇编语言实验指导书目录实验一debug的启动及其基本命令的使用(2实验二内存操作数及寻址方法(6实验三汇编语言程序的调试与运行(8实验四查表程序设计(10实验五系统功能调用(12实验六循环程序设计(13实验七分支程序设计(15实验八子程序设计(18实验九综合程序设计(20附录实验报告(21实验一debug的启动及其基本命令的采用一.实验目的:掌握debug的基本命令及其功能二.实验内容:debug就是专门为汇编语言设计的一种调试工具,它通过STM,设置断点等方式为汇编语言程序员提供更多了非常有效率的调试手段。
1、debug程序的启动在dos提示符下,可以键入命令:c>debug[d:][path][文件名][参数1][参数2]其中文件名就是被调试文件的名称,它须就是继续执行文件(exe,两个参数就是运转被调试文件时所须要的命令参数,在debug程序调到后,发生提示符“-”,此时,可以键入所需的debug命令。
在启动debug时,如果输入了文件名,则debug程序把指定文件装入内存。
用户可以通过debug的命令对指定文件进行修改、显示和执行。
如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用debug的命令进行修改、显示和执行。
2、debug的主要命令(1编订命令a,格式为:-a[地址]该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。
(2反汇编命令u,有两种格式:1-u[地址]该命令从选定地址已经开始,反汇编32个字节,若地址省略,则从上一个u命令的最后一条指令的之下一个单元已经开始表明32个字节。
2-u范围该命令对指定范围的内存单元进行反汇编,例如:-u04ba:01000108或cu04ba:0100l9此二命令就是耦合的。
(3运转命令g,格式为:-g[=地址1][地址2[地址3。
孝感学院计算机科学系本科《汇编语言程序设计》实验指导书目录实验一:汇编环境与DEBUG调试 (2)实验二:8086汇编语言分支程序设计 (8)实验三:8086汇编语言循环程序设计 (10)实验四:8086汇编语言子程序程序设计 (13)实验五:8086汇编语言中断与磁盘程序设计 (17)相关说明:《汇编语言程序设计》实验的主要目的是掌握汇编程序调试的方法与一般的程序设计能力,为今后的硬件应用打下基础。
因此本实验指导书重在强调实验调试的环节,有关程序设计的具体方法及相关算法请参见教材。
此文件中用黑体字加粗的内容一般为重要信息或实验的步骤与要求,未使用黑体加粗或有下划线的内容是提示信息或问题的答案。
实验一:汇编环境与DEBUG调试目的与要求熟悉汇编环境与汇编源程序的调试,重点掌握汇编的过程与常用DEBUG命令的用法实验内容一、熟悉汇编的编程环境1.汇编语言源程序的建立:可以使用任何文本编辑器建立汇编源程序文件,如:TC、EDIT等。
但建立的文件扩展名建议为.asm,下面的源程序功能用于在屏幕上输出字符串“hello,world!”,我们通过此源程序的运行过程了解汇编的编程环境。
DATA SEGMENTBUF DB“hello,world!$”DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AX,9INT21HMOV AH,4CHINT21HCODE ENDSEND START在DOS提示符下键入以下编辑器命令,如:C:\MASM>EDIT或TC然后在编辑器的窗口中通过键盘输入以上源程序。
并保存为文件abc.asm.后返回到DOS提示符下。
2.将源程序文件汇编成目标程序文件:汇编功能可以使用Microsoft的MASM进行,微软的汇编程序有多个版本,但使用方法大致相同,本实验将使用MASM 5.0进行汇编。
《汇编语言》实验指导书目录实验一Debug命令的使用 (3)实验二基本汇编指令的使用 (7)实验三汇编语言程序的调试与运行 (10)实验四系统功能调用程序的调试与运行 (15)实验五分支程序设计 (17)实验六循环程序设计 (20)实验七子程序设计 (23)实验八高级汇编语言程序设计 (25)实验九I/O程序设计 (30)实验十中断程序设计 (33)实验十一综合程序设计 (38)实验一Debug命令的使用一、知识点1、DEBUG简介DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。
在汇编语言程序调试中很常用。
DEBUG的提示符是“-”,所有DEBUG调试命令均在此提示符下输入。
DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。
DEBUG命令的使用注意问题:(1)字母不分大小写(2)只使用十六进制数,但没有带后缀字母“H”(3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。
(4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。
2、Debug的调入和退出以WIN2000环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态:C:\Documents and Settings\lfy>然后输入命令:>Debug进入Debug调试状态,出现Debug命令提示府“-”,在此提示符下可运行所需要的Debug 命令了。
退出Debug的命令:Q3、Debug常用命令(1)汇编命令A,格式为:- A [地址]功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。
若不指定地址,则系统从默认的地址开始存放。
按回车键退出汇编状态应用:用于调试一条指令或几条指令组成的一个程序段。
(2)显示和修改寄存器命令R,格式为:- R [寄存器名]功能:若指定寄存器,则显示指定的寄存器的内容,并可进行修改;若不要修改,则按Enter 健。
实验一简单程序编制和上机过程一.实验目的1.掌握计算机常用代码的软件转换技术。
2.熟悉DEBUG软件的使用。
3.掌握简单程序的编程方法。
二.实验内容代码转换是计算机和I/O设备进行信息交换的重要技术之一。
各种I/O设备所提供和接收的数据编码不尽相同。
为了处理这些信息,计算机必须将各种不同编码形式的信息转换成别种适当的数据形式。
例如,键盘输入的数据均为ASC Ⅱ码形式存储在内存中,通常要求将其转换成相应的数据形式。
一般实现代码转换有两种方法:1.软件法利用CPU的算术逻辑运算功能,通过运算或查表实现各种数据代码间的转换。
该方法经济但速度慢。
2.硬件法利用专用代码转换集成电路进行转换。
如74LS74可把BCD码转换为七段代码。
这种方法需要硬件费用,但速度快。
本实验要求掌握软件编码转换技术。
计算机常用的代码有二进制、八进制、十六进制、BCD码、ASCⅡ码、七段码等,它们之间的相互关系如下表所示。
本次试验的内容是ASCⅡ码转换为未组合BCD码设从键盘输入十进制数的ASCⅡ码已存放在起始地址CS :150H的单元中,把它转换成未组合BCD码后,再分别存入起始地址为CS:15AH的单元中。
若输入的不是十进制数的ASCⅡ码,则相应存放结果单元的内容为“FF”。
提示:1.组合BCD码是一位十进制数字占一个字节,高半字节为0,低半字节为该十进制数字的BCD码。
ASCⅡ码转换为未组合BCD码只需减30H。
2.程序框图如下图所示。
3.程序执行前,需要在CS:150H内存缓冲区写入待转换的ASCⅡ码。
方法如下:方法一:用A命令-ACS:150 DB 35,39,30,41,32CS:155 ∧C方法二:用E 命令-ECS:150,35,39,30,41,32方法三:用F命令-FCS:150 L5 35,39,30,41,321.执行程序后检查执行结果可用D命令:-DCS:15ACS:15A 05,09,00,FF,02ASCⅡ码转换为未组合BCD码的程序流程图参考程序如下:ORG 100HMOV CX,0005HMOV DI,150HBB:MOV BL,0FFHMOV A,[DI]CMP AL,3AHJNB DONESUB AL,30HJB DONEMOV BL,ALDONE:MOV AL,BLMOV [DI+0AH],ALINC DILOOP BBINT 20HORG 150HDB 35H,39H,30H,41H,32H实验二顺序结构的程序设计一.实验目的1.掌握计算机常用代码的软件转换技术。
实验一宏汇编MASM5.0运行环境一、实验目的1、熟悉的MASM5.0宏汇编程序运行环境2、掌握用MASM5.0运行汇编语言程序的步骤3、学习及掌握的debug程序的各种命令并调试汇编语言程序。
二、实验仪器计算机、masm汇编运行环境三、实验原理1、建立汇编语言的工作环境(1)编辑程序:EDIT .COM(2)汇编程序:MASM .EXE(3)连接过程:LINK.EXE(4)调试程序:DEBUG .EXE2、运行汇编语言程序的步骤(汇编语言程序的上机过程)在汇编实验步骤的word文档中(请下载参考)。
(1)用汇编程序建立源文件(*.asm)汇编程序:记事本,写字板或EDIT.EXE 。
(文本文件编辑器)扩展名为:.asm(2)用汇编程序(MASM、EXE)产生OBJ文件。
(3)用连接程序(LINK 、EXE)生成EXE文件。
(4)程序的执行直接输入文件名LINKEDIT记事本写字板MASM3、用DEBUG 运行、调试汇编语言程序(1)进入DEBUGC:\ DEBUG (前提DEBUG .COM 程序在C 盘)屏幕显示:- “-”这个符号是进入DEBUG的提示符,在该提示符下可键入任意DEBUG 命令,现在用A命令送程序。
(2)送程序并汇编-A 100169C:0100 MOV DL ,33169C:0102 MOV AH ,2169C:0104 MOV INT 21169C:0106 MOV INT 20169C:0101此程序已送完,并汇编成机器指令(3)现在用G命令一运送程序-G3看一下机器指令是什么样的用反汇编命令U(4)反汇编-U 100 :108段地址偏移地址指令169C :0100 B233 MOV DL ,33169C :0102 B402 MOV AH ,02169C :0104 CD21 INT 21169C :0106 CD20 INT 20169C :D108(5)用Q命令退出DEBUG 返回DOS-QC:\4、DEBUG 命令(1)汇编命令A格式1)A < 段寄存器名>:<位移> ;(段寄器)为段地址2)A <段地址> :<位移> ;(c s) 为段地址3)A <位移> ;4)A ;以CS:100作地址功能:键入该命令后显示的地址和位移并等待用户从键盘逐条键入汇编命令。
第2章汇编语言程序设计实验2.1、实验1-1——多字节数的运算1、实验目的熟悉汇编语言的上机环境和各种工具(编辑、汇编、连接、调试);掌握完整段和简化段两种汇编程序的编写;掌握简单汇编程序的处理和调试过程。
2、实验内容⑴、两个长度为3个字节(3B)的二进制无符号数,分别存放在首地址为buf1和buf2的连续内存单元中,编程求这两者之和,并将结果放在起始地址为res的内存单元中。
例如,这两个数据为888888H、456789H,则其和应为[1]345671H。
(00CDF011H,对应十进制数表示13496337,)要求:☞用完整段和简化段两种方式实现。
☞观察它们的反汇编结果并进行比较,单步运行程序。
注意:☞程序运行前先将res清0,程序运行后观察res单元中的数据是否符合预期。
☞数据存放应“高对高、低对低”。
⑵、将两数改为3B的压缩BCD码,重复以上实验过程。
例如,这两个数据为888888H、456789H,则其和应为[1]345677H(表示[1]345677)。
☞注意,每两个字节相加后,应紧接着进行二-十进制调整。
3、实验扩展和思考⑴、计算两个长度为3B的二进制数据之差应如何进行操作?⑵、计算两个长度为3B的压缩BCD码数据之差应如何进行操作?================================================================================实验报告================================================================================●方案描述●程序清单2.2、实验1-2——BCD码操作(参考课本P72,例3.5)(如果要求转换为ASCII 码显示出来呢?)1、实验目的掌握BCD码的操作,包括压缩BCD码的分离和非压缩BCD码的压缩等。
2、实验内容⑴、将存放在首地址为buf的5B的压缩BCD码分离为10B的非压缩BCD码,并存于首地址为res的单元中。
汇编语言实验指导书目录实验一DEBUG的启动及其基本命令的使用(2实验二内存操作数及寻址方法(6实验三汇编语言程序的调试与运行(8实验四查表程序设计(10实验五系统功能调用(12实验六循环程序设计(13实验七分支程序设计(15实验八子程序设计(18实验九综合程序设计(20附录实验报告(21实验一DEBUG的启动及其基本命令的使用一.实验目的:掌握DEBUG的基本命令及其功能二.实验内容:DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
1、DEBUG程序的启动在DOS提示符下,可键入命令:C>DEBUG[d:][path][文件名][ 参数1][参数2]其中文件名是被调试文件的名称,它须是执行文件(EXE,两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。
在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。
用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。
如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。
2、DEBUG的主要命令(1汇编命令A,格式为:-A[地址]该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。
(2反汇编命令U,有两种格式:1-U[地址]该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。
2-U范围该命令对指定范围的内存单元进行反汇编,例如:-U 04BA:01000108或–U04BA:0100 L9此二命令是等效的。
(3运行命令G,格式为:-G [=地址1][地址2[地址3。
]]其中地址1规定了运行起始地址,后面的若干地址均为断点地址。
(4追踪命令T,有两种格式:1逐条指令追踪:-T[=地址]该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。
2多条指令追踪:-T[=地址][值]该命令从指定地址起执行n条命令后停下来,n由[值]确定。
(5显示内存单元内容的命令D,格式为:-D[地址]或-D[范围](6修改内存单元内容的命令E,它有两种格式:1用给定的内容代替指定范围的单元内容:-E地址内容表例如:-E2000:0100F3“XYZ” 8D其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:0100 到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。
2逐个单元相继地修改:-E地址例如:-E100:18E4:010089.78此命令是将原100号单元的内容89改为78。
78是程序员键入的。
(7检查和修改寄存器内容的命令R,它有三种方式:1显示CPU内部所有寄存器内容和标志位状态;格式为:-R2显示和修改某个指定寄存器内容,格式为:-R 寄存器名例如打入:-R AX系统将响应如下:AX FIF4:表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如:-R BXBX 0369:059F则BX内容由0369改为059F3显示和修改标志位状态,命令格式为:-RF系统将给出响应,如OV DN EI NG ZR AC PE CY-这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。
如OV DN EI NG ZR AC PE CY-PONZDINV(8命名命令N,格式为:-N 文件名此命令将文件名格式化在CS:5CH的文件控制块内,以便使用L或W命令把文件装入内存进行调试或者存盘。
(9装入命令L,它有两种功能:1把磁盘上指定扇区的内容装入到内存指定地址起始的单元中,格式为:-L 地址驱动器扇区号扇区数2装入指定文件,格式为:-L [地址]此命令装入已在CS:5CH中格式化的文件控制块所指定的文件。
在用L命令前,BX和CX中应包含所读文件的字节数。
(10写命令W,有两种格式:1把数据写入磁盘的指定扇区:-W 地址驱动器扇区号扇区数2把数据写入指定文件中:-W [地址]此命令把指定内存区域中的数据写入由CS:5CH处的F CB所规定的文件中。
在用W命令前,BX和CX中应包含要写入文件的字节数。
(11退出DEBUG命令Q,该命令格式为Q它退出DEBUG程序,返回DOS,但该命令本身并不把在内存中的文件存盘,如需存盘,应在执行Q命令前先执行写命令W。
三.实验要求:用汇编语言编写一个计算“3+5”的加法程序四.实验报告:写出在DEBUG状态下编写、运行程序的过程以及调试所中遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
实验二内存操作数及寻址方法一.实验目的:1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
2、掌握数据在内存中的存放方式和内存操作数的几种寻址方式。
3、掌握简单指令的执行过程。
二.实验内容:1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。
请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。
2、设DS=当前段地址,BX=0300H,SI=0002H;请用D EBUG的命令将存储器偏移地址300H~304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。
在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。
程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI]HLT三.实验要求:1、实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。
2、本实验只要求在DEBUG调试程序状态下进行,包括汇编程序、调试程序和执行程序。
四.实验报告:1、程序说明。
说明程序的功能、结构。
2、调试说明。
包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
3、写出源程序清单和执行结果。
实验三汇编语言程序的调试与运行一.实验目的1.学习数据传送和算术运算指令的用法2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
二.实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在DA TA1和DA TA2为首的5个内存单元中,结果送回DA TA1处。
三.程序框图图3.1 两个多位十进制相加程序流程图四.调试步骤1.编辑源程序,建立一个以后缀为.ASM的文件.2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。
无错时继续第3步。
3.连接目标程序,产生可执行程序。
4.DEBUG调试可执行程序,记录数据段的内容。
5.在操作系统状态下,运行程序,并记录屏幕显示内容。
五.思考题1.将上述程序改为5位数相加,结果为6位数的加法程序。
(需考虑进位2.简单叙述上机步骤,调试方法。
实验四查表程序设计一.实验目的:1、熟练掌握编写汇编语言原程序的基本方法和基本框架。
2、掌握查表法和查表指令XLAT。
3、熟练使用DEBUG调试程序。
二.实验内容:用查表的方法将一位十六进制数转换成与它相应的ASCII码,并将结果存放到A SCI单元中。
三.编程提示:既然指定用查表的方法,那么首先要建立一个表TABLE。
我们在表中按照十六进制数从小到大的顺序放入他们对应的ASCII码值。
DA TA SEGMENTTABLE DB30H,31H,32H,33H,34H,35H,36H,37HDB 38H,39H,41H,42H,43H,44H,45H,46H HEX DB X ;X为待转换的十六进制数ASCI DB ?;存放转换后的ASCII码DA TA ENDS四.实验要求:实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等五.实验报告:1、程序说明。
说明程序的功能、结构。
2、调试说明。
包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
3、写出源程序清单和执行结果。
实验五系统功能调用一.实验目的:1、掌握接受键盘数据的方法,并了解将键盘数据显示时,须转为ASCII码的原理。
2、掌握DOS功能调用的编程方法。
二.实验内容:试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
三.编程提示:利用DOS功能调用INT21H的1号功能从键盘输入字符和2号功能在显示器上显示一个字符。
四.实验要求:实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。
五.实验报告:1、程序说明。
说明程序的功能、结构。
2、调试说明。
包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
3、写出源程序清单和执行结果。
实验六分支程序设计一.实验目的:1、掌握分支程序的结构。
2、掌握分支程序的设计、调试方法。
二.实验内容:假设有一组数据:5,-4,0,3,100,-51,请编一程序,判断:每个数大于0,等于0,还是小于0;并输出其判断结果。
即: 1 当x>0y= 0 当x=0-1 当x<0三.实验要求:实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。
四.编程提示:1、首先将原始数据装入起始地址为XX的字节存储单元中。
2、将判断结果以字符串的形式存放在数据区中,以便在显示输出时调用。
3、其中判断部分可采用CMP指令,得到一个分支结构,分别输出“y=0”,“y=1”,“y=-1”。
4、程序中存在一个循环结构,循环6次,调用6次分支结构后结束。
五.思考题:程序中的原始数据是以怎样的形式存放在数据区中的?请用DEBUG调试程序观察并分析。
六.实验报告:1、程序说明。
说明程序的功能、结构。
2、调试说明。
包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
3、画出程序框图。
4、写出源程序清单和执行结果。
5、回答思考题。
实验七循环程序设计一.实验目的1.掌握循环程序设计的方法(两重性循环结构2.掌握正确分配与使用寄存器。
二.实验内容与要求以GRADE为首地址的10个字的数组中保存有学生成绩。