微机实验:汇编语言程序的调试与运行步骤.doc
实验一、汇编语言程序的上机过程及调试
实验一、汇编语言程序的上机过程及调试<i>汇编程序调试过程</i>实验一、汇编语言程序的上机过程及调试<i>汇编程序调试过程</i>一、实验目的熟练掌握汇编语言上机汇编、连接和装入运行。
学会使用调试程序DEBUG或TD来进行程序调试。
<i>汇编程序调试过程</i>二、实验内容(一)汇编程序建立过程a.建立汇编源程序─通过b.编译为目标文件d.连接为可执行文件c.不通过,重新修改(语句错误)f.不正确,用调试工具调试,重新修改(逻辑错误)e运行正确g.完成<i>汇编程序调试过程</i>汇编语言的源程序需要编译和连接后才能在计算机上执行。
汇编语言源程序扩展名规定为.ASM。
用MASM编译源程序后,将产生源程序的目标程序文件,其扩展名为.OBJ。
再经过连接程序(LINK)把目标程序文件与库文件或其他目标文件连接在一起形成可执行文件(扩展名为.EXE)。
这时就可以运行该程序了。
DOS下可直接键入可执行程序的文件名从而运行该程序。
<i>汇编程序调试过程</i>(二)过程详细说明步骤a: 建立汇编源程序如果现在的根目录不是E盘,写入E :然后回车,再打入cd *** (***是你新建的文件夹名),例如电气031班的同学,现在你的DOS界面根目录为:E\dq031 。
打入edit然后回车,EDIT的操作画面便会出现在屏幕上,alt键可以控制工具栏操作,←↑→↓箭头控制阴影选择的上下移动。
我们现在按alt键,选中flie, 按↓选中open,回车,找到刚刚拷贝的asm 文件,回车。
选择存盘并给你输入的文件起一个文件名,形式:*** . asm ;然后回到dos环境。
<i>汇编程序调试过程</i>步骤b: 编译目标文件在DOS提示符下键入MASM *** .asm回车,(其中***为你刚才在*****RE a 中建立的文件名)这时汇编程序的输出文件可以有三个(分别:.obj .lst .crf),便会出现三次提问,在这可以一路回车即可。
实验一 熟悉汇编程序调试步骤
实验一汇编语言环境一、实验目的1.熟悉汇编语言的上机环境,学习EDIT,MASM,LINK程序的使用,掌握建立、汇编、链接、运行汇编语言程序的过程。
2.熟悉DEBUG有关命令的使用方法。
二、实验原理建立、汇编、链接、运行汇编语言程序的过程方法。
三、主要仪器及耗材计算机、MASM软件包。
四、实验内容与步骤内容:1.输入、编辑汇编语言程序。
2.对汇编语言程序进行汇编、连接和运行。
步骤:1.在DOS提示符下,进入MASM目录。
2. 在MASM目录下启动EDIT编辑程序,输入源程序,并对其进行汇编、连接和运行。
1) 调用edit输入、编辑源程序并保存在指定的目录中;例:edit no1.asm,进入编辑窗口code segmentassume cs:codestart:mov ah,08hint 21hmov ah,4chint 21hcode endsend start编辑完后,何在退出edit窗口2) 用汇编程序masm对源程序汇编产生目标文件obj。
例:masm no1不断修改错误,直至汇编通过为止,产生no1.obj。
3) 用连接程序link产生执行文件exe.例:link no14) 执行程序:可直接从DOS执行程序,即在DOS环境中,输入文件名no1即可。
再次熟悉汇编连接,运行过程。
1.在DOS提示符下,进入MASM目录。
2. 在MASM目录下启动EDIT编辑程序,输入源程序,并对其进行汇编、连接和运行。
1) 调用edit输入、编辑源程序并保存在指定的目录中;例:edit no2.asm,进入编辑窗口DATAS SEGMENTbuf db 'I am a student!$' ;此处输入数据段代码DATAS ENDSSTACKS SEGMENTdb 200 dup(0);此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXlea dx,bufmov ah,9int 21h;此处输入代码段代码MOV AH,4CHINT 21HCODES ENDSEND START编辑完后,何在退出edit窗口2) 用汇编程序masm对源程序汇编产生目标文件obj。
汇编语言的编程步骤与调试方法
汇编语言的编程步骤与调试方法汇编语言是一种底层的程序设计语言,直接操作计算机硬件。
在编写汇编语言程序时,需要经过一系列的编程步骤和调试方法,以确保程序的正确性和可靠性。
下面是关于汇编语言的编程步骤和调试方法的一些详细介绍。
一、编程步骤:1.定义程序目标:明确程序的功能、输入和输出。
2.设计算法和逻辑:将目标转化为汇编语言指令,设计算法和逻辑流程。
3.选择寄存器和指令:根据算法和逻辑需求,选择合适的寄存器和指令。
4.编写指令:根据算法和逻辑需求,使用正确的指令来编写汇编语言程序。
5.汇编编译:使用汇编编译器将汇编代码翻译成机器代码。
6.汇编连接:使用链接程序将机器代码和其他必要的文件(如库文件)连接成可执行文件。
7.调试和测试:进行调试和测试,确保程序的正确性和可靠性。
8.优化和改进:根据测试结果,对程序进行优化和改进。
二、调试方法:1.插入调试指令:在程序中插入一些特定的调试指令,可以输出一些关键的变量或标志位,以便观察程序的执行路径和结果。
2.单步执行:逐条执行程序代码,并观察每条指令的执行结果和影响,以及寄存器和存储器的变化情况。
3.观察寄存器和存储器:利用调试器观察程序执行过程中的寄存器和存储器的变化情况,以确定代码逻辑是否正确。
4.打印和日志输出:通过在程序中插入打印和日志输出的语句,可以观察关键变量和代码的执行情况,以帮助调试。
5.内存和寄存器状态检查:检查程序执行过程中的内存和寄存器状态,特别是对一些关键变量和标志位进行监视,以便发现问题所在。
6.脱机调试:将程序转储至仿真器或虚拟机,并在其中进行无风险的调试,以排查错误。
三、汇编程序调试常见问题及解决方法:1.程序崩溃或死循环:检查程序中循环和分支语句的逻辑判断条件是否正确,以及循环内的寄存器和内存操作是否正确。
2.内存访问错误:查看程序访问的内存地址和存储器的范围是否正确,并检查程序中的指针操作是否正确。
3.寄存器使用错误:检查程序中使用的寄存器是否正确选择和使用,尤其是在多个函数调用的情况下,需要注意寄存器的保存和恢复。
微机实验汇编语言程序的调试与运行步骤
软件实验一汇编语言程序的调试与运行一.实验目的1.学习数据传送和算术运算指令的用法2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
二.实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在DATA1和DA TA2为首的5个内存单元中,结果送回DATA1处。
三.程序框图图1.1 两个多位十进制相加程序流程图四.程序清单DISP MACRO XMOV DL,X ;要显示的字符送DL寄存器MOV AH,02H ;DOS功能调用号是02HINT 21H ;21H中断程序是DOS功能调用ENDMDATA SEGMENTDATA1 DB '12732'DATA2 DB '06815'N EQU $-DA TA2DATA ENDSSTACK SEGMENT STACKSTA DB 20 DUP (?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DA TA START:MOV AX,DA TAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXLEA SI,DATA1 ;☆MOV BX,0MOV CX,NCALL DISPL ;显示被加数DISP '+'LEA SI,DATA2MOV BX,0MOV CX,NCALL DISPL ;显示加数DISP '='LEA DI,DA TA1MOV CX,NCALL ADDA ;调用加法子程序LEA SI,DATA1MOV BX,0MOV CX,NCALL DISPL ;显示运算结果DISP 0DHDISP 0AHMOV AX,4C00HINT 21HDISPL PROC ;显示子程序DS1: MOV AH,02HMOV DL,[SI+BX]INT 21HINC BXLOOP DS1RETDISPL ENDPADDA PROC ;加法子程序PUSH CXMOV BX,0AD1: SUB BYTE PTR [SI+BX],30HSUB BYTE PTR [DI+BX],30HINC BXLOOP AD1POP CXPUSH CXMOV BX,N-1 ;☆☆CLCAD2: MOV AL,[SI+BX]ADC AL,[DI+BX]AAAMOV [DI+BX],ALDEC BXLOOP AD2POP CXPUSH CXMOV BX,0 ;☆☆☆AD3: ADD BYTE PTR [DI+BX],30HINC BXLOOP AD3POP CXRET ;☆☆☆☆ADDA ENDPCODE ENDSEND START五.调试步骤1.编辑源程序,建立一个以后缀为.ASM的文件.2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。
汇编语言的编程步骤与调试方法
汇编语言得编程步骤与调试方法一、汇编源程序得建立1、使用工具sm文件;(2)ASM,MASM汇编程序,对源程序进行汇编,生成、obj文件-目标文件,以及调试用、LST-列表文件与、CRF-交叉引用表;(3)Link连接程序,对使用得目标文件与库文件进行连接,生成、exe文件,同时调试用、map-地址映像文件;如果源程序无语法错误,上述三步将生成可运行得、exe文件,如果运行结果无误,则完成对汇编程序得编程,如果运行后结果存在错误,需要进行调试。
(4)Debug调试程序,对、exe文件进行调试,修改,直到程序正确。
图3目标程序生成步骤图2、编程过程(1)用文本编辑软件,编写扩展名为、asm得源文程序文件。
(2)用汇编程序对编好得源文件进行汇编。
命令行:masm[*、asm]↙如果源文件中存在语法错误,则汇编程序将指出错误类型及位置,可根据这些信息重新编辑源文件,直至无语法错误,汇编后,将生成指定名称得目标文件、obj。
使用MASM50汇编程序进行汇编,输入命令行masm或者masm *、asm 后,根据提示,输入文件名,在汇编没有错误得情况下,如屏幕所示:汇编程序可生成三个文件,*、obj,*、lst与*、crf。
*、obj-目标文件,用于连接生成可执行文件;*、lst-列表文件(可选),汇编语言汇编得机器语言与汇编语言对照表,可用于调试;*、crf-交叉引用文件(可选),给出了用户定义得所有符号与对每个符号定义、引用得行号。
(3)目标文件得连接命令行:link[*、obj][*、obj] [*、lib] ↙连接程序,将多个目标程序及库文件,连接生成可执行得*、exe文件,同时可选择生成*、map文件。
*、map-地址映像文件,给出内存地址分配得有关信息。
下图所示屏幕,为Link连接两个目标文件,没有错误得情况下,生成*、e xe文件。
(4)执行程序执行*、exe文件,观察程序运行结果,如果存在错误,需要进行调试。
微机实验二
实验二:汇编语言(三种基本结构程序)设计与调试一、实验目的1.学习汇编语言(三种基本结构程序)设计与调试。
2.掌握多分支结构程序设计的方法。
3.掌握循环结构程序设计的方法。
4.熟悉在PC机上建立、汇编、连接和调试程序的方法。
二、实验内容(顺序结构的程序设计)程序一:设W、X、Y、Z均为16位带符号数。
要求完成计算表达式(W-(X*Y+Z-220))/X。
将表达式的商和余数存入数据区RESULT单元开始的区域中。
编程思路:该题目要求掌握乘除法运算中带符号数和无符号数运算的区别。
为了实现指定功能,应从以下几个方面考虑:(1)带符号数的乘除法运算应选用的指令。
(2)乘、除法运算中操作数的长度问题。
(3)带符号数的扩展问题。
参考程序清单DATA SEGMENTW DW -304X DW 1000Y DW -12Z DW 20RESULT DW 2 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX,XIMUL YMOV CX,AxMOV BX,DXMOV AX,ZCWDADD CX,AXADC BX,DXSUB CX,220SBB BX,0MOV AX,WCWDSUB AX,CXSBB DX,BXIDIV XMOV RESULT,AXMOV RESULT+2,DXMOV AH,4CHINT 21HCODE ENDSEND START三、实验内容(分支结构的程序设计)程序二:在数据区中定义三个带符号字节变量,编写程序将其中的最大数找出送到MAX单元中。
该题目要求掌握多分支程序设计方法。
编程思路:为了实现指定功能,应从以下几个方面考虑:(1) 确定编程的算法思想。
(2) 确定带符号数比较大小转移应选择哪一组条件转移指令。
参考程序清单:DATA SEGMENTX DB 115Y DB 23Z DB -20MAX DB ?DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV AL,XCMP AL,YJG NEXTMOV AL, YCMP AL,ZJG EXITMOV AL,ZJMP EXITNEXT:CMP AL,ZJG EXITMOV AL,ZEXIT:MOV MAX,ALMOV AH,4CHINT 21HCODE ENDSEND START ;返回DOS四、实验内容(循环结构的程序设计)程序三:编写程序实现将数据段STR1单元开始的20个字符移到STR2开始的存储区。
实验一 熟悉汇编程序使用及调试
实验一熟悉汇编程序使用及调试一、实验目的1、熟悉在PC机上建立、汇编、连接、调试和运行8086汇编语言程序的过程。
2、熟悉DEBUG中一些常用命令的功能和使用。
二、实验内容详细阅读《微机原理及接口技术》实验指导书中关于汇编语言程序的上机过程,调试程序DEBUG的使用。
导航员提出目标和问题。
自行在教材中找一个较短的完整程序,或使用ftp:///课件下载/宏汇编/实验下面的例程序si mple1.asm,进行汇编、连接,然后运行程序,结果应当在屏幕上显示出一个字符串。
操作员准备好程序代码。
用DEBUG调试上述生成的可执行文件,分别用U命令查看程序中的指令机器码、用D命令查看数据区中的字符串,用R命令查看寄存器,用T命令单步执行程序指令,观察执行结果。
监督员做好记录,实验完成后和同组同学讨论结果,分析出现问题的原因,回答导航员最初提出的问题。
三、实验设备1、微型计算机一台四、参考程序清单data segmentstring db "Welcome to Network Engineering 10 Classes!$"data endsstack segmentdw 20 dup(0)stack endscode segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,ax ;确定数据段的位置mov dx,offset stringmov ah,9int 21h ;输出字符串mov ah,4chint 21h ;返回操作系统code endsend start五.调试要求1.汇编源程序经过汇编、连接无误后,运行得到的可执行程序,观察并记录程序运行结果。
2.如果有错误提示,记录并弄懂其含义,改正错误后再经汇编、连接后得到并记录运行结果。
3.用DEBUG调试,注意观察指令的形式,数据的排列,寄存器的显示,特别是标志寄存器的内容。
实验二、汇编语言程序的汇编与调试
实验二、汇编语言程序的汇编与调试一、实验目的掌握汇编语言程序的汇编与调试过程,熟悉MASM、LINK、DEBUG等程序的使用。
了解列表文件与交叉参考文件的基本内容。
二、实验原理编制好汇编语言的源程序后,若要在机器上运行,必须经过如图1- 1所示的几个步骤:1、编辑源程序图1- 1 汇编语言程序的上机过程可以使用任何一种文本编辑程序编辑汇编语言源程序,通常使用DOS提供的文本编辑程序EDIT,具体使用方法为:从Windows进入MS-DOS方式,在DOS提示符后键入:EDIT [文件名]进入EDIT后,对源程序进行全屏幕编辑。
编辑完成后选择File菜单的Save命令保存文件,选择File菜单的Exit命令退出EDIT。
对于汇编语言源程序,其文件的扩展名约定使用ASM。
2、汇编汇编程序的基本功能是把用汇编语言编写的源程序翻译成机器语言目标代码,同时生成列表文件及交叉参考文件。
汇编程序的操作步骤为:在DOS提示符后键入:MASM 源程序文件名或MASM 源程序文件名,列表文件名,交叉参考文件名其中文件名不必给出扩展名,汇编程序会按照默认情况处理或产生。
若汇编后出现警告错误或严重错误,应调用EDIT对源程序进行修改,再重新汇编,直至无错误为止。
列表文件[.LST]和交叉参考文件[.XRF]有助于程序的分析和错误的查找,根据需要可以生成这两个文件(缺省时无)。
其中列表文件是文本文件,可用EDIT打开。
交叉参考文件是二进制文件,通过执行程序CREF.EXE,将二进制交叉参考文件转换为索引列表文件[.REF],具体方法为在DOS提示符后键入:CREF 交叉参考文件名3、连接汇编以后的目标代码的地址还是可浮动的相对地址,需要经过连接才能生成可执行程序。
连接程序的功能是连接多个目标代码模块(如果有的话),确定每个程序段的地址,形成可执行程序文件[.EXE]。
连接程序的操作步骤为:在DOS提示符后键入:LINK 目标代码文件名当目标代码文件不止一个时,各个目标代码文件名之间用+(加号)连接;也可以用命令行方式运行LINK程序,其格式为:LINK 目标文件名,可执行程序文件名,内存映象文件名,库文件名4、调试程序通过汇编和连接,排除了语法错误,并不一定能正确执行,这就需要使用动态排错程序。
微机实验:汇编语言程序的调试与运行步骤.doc
软件实验一汇编语言程序的调试与运行一.实验目的1.学习数据传送和算术运算指令的用法2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
二.实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在DATA1和DA TA2为首的5个内存单元中,结果送回DATA1处。
三.程序框图图1.1 两个多位十进制相加程序流程图四.程序清单DISP MACRO XMOV DL,X ;要显示的字符送DL寄存器MOV AH,02H ;DOS功能调用号是02HINT 21H ;21H中断程序是DOS功能调用ENDMDATA SEGMENTDATA1 DB '12732'DATA2 DB '06815'N EQU $-DA TA2DATA ENDSSTACK SEGMENT STACKSTA DB 20 DUP (?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DA TA START:MOV AX,DA TAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXLEA SI,DATA1 ;☆MOV BX,0MOV CX,NCALL DISPL ;显示被加数DISP '+'LEA SI,DATA2MOV BX,0MOV CX,NCALL DISPL ;显示加数DISP '='LEA DI,DA TA1MOV CX,NCALL ADDA ;调用加法子程序LEA SI,DATA1MOV BX,0MOV CX,NCALL DISPL ;显示运算结果DISP 0DHDISP 0AHMOV AX,4C00HINT 21HDISPL PROC ;显示子程序DS1: MOV AH,02HMOV DL,[SI+BX]INT 21HINC BXLOOP DS1RETDISPL ENDPADDA PROC ;加法子程序PUSH CXMOV BX,0AD1: SUB BYTE PTR [SI+BX],30HSUB BYTE PTR [DI+BX],30HINC BXLOOP AD1POP CXPUSH CXMOV BX,N-1 ;☆☆CLCAD2: MOV AL,[SI+BX]ADC AL,[DI+BX]AAAMOV [DI+BX],ALDEC BXLOOP AD2POP CXPUSH CXMOV BX,0 ;☆☆☆AD3: ADD BYTE PTR [DI+BX],30HINC BXLOOP AD3POP CXRET ;☆☆☆☆ADDA ENDPCODE ENDSEND START五.调试步骤1.编辑源程序,建立一个以后缀为.ASM的文件.2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。
汇编语言的编程步骤与调试方法
汇编语言的编程步骤与调试方法汇编语言作为一种低级编程语言,具有高度的灵活性和效率,尤其适用于对计算机底层操作进行精确控制的应用。
本文将介绍汇编语言的编程步骤与调试方法。
一、编程步骤1. 设计算法:编程之前,首先需要明确编写代码的目的和功能。
根据需求,设计出合适的算法,确定程序的输入、输出等基本要素。
2. 选择汇编语言指令集:根据计算机的硬件平台和操作系统,选择合适的汇编语言指令集,如x86、ARM等。
3. 编写代码:根据算法,使用汇编语言指令集编写代码。
汇编语言使用助记符来表示指令和操作数,需要了解指令的语法和使用方法。
4. 组织程序结构:在编写代码时,需要按照一定的结构组织程序,包括定义数据段、代码段等,并进行正确的程序控制流程设计。
5. 完善程序功能:根据需求,完善程序的各项功能。
可以包括输入输出处理、数据操作、逻辑判断、循环处理等。
6. 调试和优化:编写完成后,进行程序的调试和优化。
可以通过调试工具、打印输出等方式,定位和解决程序中的错误和问题。
同时,优化程序的性能,提高代码的执行效率。
7. 文档记录:在编写代码的过程中,逐步记录代码的功能、变量定义、重要的注释等信息,便于他人阅读和维护。
二、调试方法1. 单步调试:单步调试是指逐条执行汇编语言程序,观察每条指令的执行情况。
通过单步调试可以查看寄存器的值、内存的状态等信息,以便定位错误。
2. 设置断点:在需要观察或调试的代码行上设置断点,运行程序时会在断点处停止执行,可以查看此时程序的状态,并逐步分析代码的执行流程。
3. 查看寄存器和内存:在调试过程中,可以查看寄存器和内存中的值,以判断程序是否按照预期的方式处理数据。
通过查看寄存器和内存的值,可以分析代码的执行过程和结果。
4. 打印输出:可以通过在程序中插入打印输出语句,输出关键变量的值,以便观察程序的执行过程和数据的变化。
5. 利用调试工具:使用专业的调试工具可以更加方便地进行汇编语言程序的调试。
实验二 汇编语言程序上机过程及调试
实验报告二课程微机原理实验名称汇编语言程序上机过程以及调试第页专业电子信息班级__ __ 学号_ __ 姓名实验日期:2014 年 3 月10 日报告退发(订正、重做)一、实验目的学习汇编语言程序设计的基本步骤,即编辑(EDIT)程序、汇编(MASM)、连接(LINK)和运行,使对汇编语言程序设计有一个初步的认识。
二、实验内容1、学习使用全屏幕文本编辑软件EDIT。
用EDIT输入一段给定的源程序。
2、用MASM对已存盘的源程序进行汇编,形成目标文件(.OBJ);如有错误,再返回到EDIT进行修改。
3、用LINK对上述形成的目标文件进行连接,形成可执行文件(.EXE)4、在DOS提示符下运行该可执行文件。
[汇编语言程序的编写格式]汇编语言程序一般由几个段组成,它们分别是堆栈段,数据段,代码段。
任何一个源程序至少必须有一个代码段和一条作为源程序结束的伪指令END。
段的定义有两种格式,分述如下:1,完整的段定义格式:一个段由段头,段体,段尾组成,形式如下:段名SEGMENT[定位类型][组合类型][‘类别’]……段名ENDS其中SEGMENT后的参数一般可省略,详细说明参阅后面的有关章节。
2,简化的段定义格式(MASM5.0版本提供)每段以.开始后跟固定的段名,一般形式如下:DOSSEG.MODEL 存储类型;“存储类型”可选择为SMALL。
.STACK[大小];堆栈段,“大小”指定堆栈的字节数。
.DATA;数据段。
.CODE[名字];代码段;一般只有一个代码段,名字可缺少……例1:用完整的段定义编写一源程序。
NAME EXAM1;可以省略DATA SEGMENT;定义数据段,以下是数据段的内容STR1 DB “HELLO,WELCOME!”,13,10,‘$’STR2 DB “DO YOU LIKE COMPUTER?(Y/N)”,13 10,‘$’STR3 DB “NICE!”,13,10,‘$’STR4 DB “SORRY!”,13,10,‘$’STR5 DB “UNKNOW,ANSWER AGAIN!(Y/N)”,DB 13,10,‘$’STR6 DB “SEE YOU NEXT TIME!”,13,10,‘$’DA TA ENDS ;数据段结束CODE SEGMENT ;定义代码段ASSUME CS:CODE;DS:DATA;以下是代码段内容START:MOV AX,DA TA;给数据段寄存器赋值MOV DS,AXMOV AH,9;显示一字符串的功能号MOV DX,OFFSET STR1;显示字符串STR1的偏址INT 21H;DOS功能调用ASK :MOV DX,OFFFSET STR2;显示字符串STR2INT 21HMOV AH,1;键盘输入一字符的功能号INT 21H;键入的字符ASCⅡ码在ALNOT AL;求反TEST AL,‘Y’;是否按下‘Y’或‘y’键JE NEXT1TEST AL,‘y’JE NEXT1TEST AL,‘N’;是否按下‘N’键或‘y’键JE NEXT2TEST AL, ‘n’JE NEXT2MOV DX,OFFSET STR5;不是按上述键MOV AH,9INT 21HJMP ASK;再返回ASKNEXT1:MOV DX,OFFSET STR3;是按下‘Y’或‘y’键MOV AH,9INT 21HJMP BYENEXT2:MOV DX,OFFSET STR4;是按下‘N’或‘n’键MOV AH,9INT 21HBYE:MOV DX,OFFSET STR6INT 21HMOV DL,7;喇叭响的ASCⅡ码MOV AH,2INT 21HMOV AH,4CH;退回DOSINT 21HCODE ENDS;代码段结束END START;源程序结束注:源程序中的每一行注释语句前一定要加分号‘;’,下同。
实验二汇编语言程序的运行与调试一
实验二汇编语言程序的运行与调试一实验二汇编语言程序的运行与调试一.实验目的:1、掌握汇编语言源程序的书写格式。
2、掌握EDIT、MASM、LINK、DEBUG等软件的使用方法。
3、掌握上机编辑、汇编、连接及运行汇编语言程序。
二&实验环境:微型计算机一台DOS或WINDOWS操作系统,MASM开发套件。
三.实验原理:1、完整的段定义伪操作data segment ; 定义数据段…data endsextra segment ; 定义附加段…extra endsstack segment stack ; 定义堆栈段…stack endscode segment ; 定义代码段assume cs:code, ds:data, es:extrastart:mov ax, datamov ds, ax ; 段地址段寄存器...… ; 在代码段填入指令序列mov ah,4chint 21h ; 程序终止,返回DOS code endsend start ; 汇编结束2、汇编语言源程序的汇编过程汇编语言源程序的汇编过程是是利用汇编程序(MASM)对已编辑好的源程序文件(.ASM)进行汇编,将源程序文件中的助记符指令逐条翻译成机器码指令,并完成源程序中的伪指令所指出的各种操作,最后可以建立3个文件:扩展名为.OBJ的目标文件、扩展名为.LST 的列表文件和扩展名为.CRF 的交叉索引文件。
目标文件(.OBJ)是必须建立的,列表文件(.LST)和交叉索引文件(.CRF)两个文件可有可无,可以通过汇编时的命令加以选择。
3、目标程序的连接过程汇编后产生的目标程序(OBJ文件)并不是可执行程序文件(EXE文件),还不能直接运行,它必须通过连接程序(LINK)连接成一个可执行程序(EXE 文件)后,才能运行。
连接程序给出的“无堆栈段的警告性错误”并不影响程序的运行。
4、为运行汇编语言程序至少要在磁盘上建立以下文件:(1)编辑程序,如EDIT.EXE,编辑汇编源程序(2)汇编程序,如MASM.EXE,生成目标代码文件。
汇编语言的编程步骤与调试方法
汇编语言的编程步骤与调试方法一、汇编源程序的建立1、使用工具(1)EDIT,记事本等文本编辑软件,编辑源程序,保存为、asm文件;(2)ASM,MASM汇编程序,对源程序进行汇编,生成、obj文件-目标文件,以及调试用、LST-列表文件与、CRF-交叉引用表;(3)Link连接程序,对使用的目标文件与库文件进行连接,生成、exe文件,同时调试用、map-地址映像文件;如果源程序无语法错误,上述三步将生成可运行的、exe文件,如果运行结果无误,则完成对汇编程序的编程,如果运行后结果存在错误,需要进行调试。
(4)Debug调试程序,对、exe文件进行调试,修改,直到程序正确。
图3 目标程序生成步骤图2、编程过程(1)用文本编辑软件,编写扩展名为、asm的源文程序文件。
(2)用汇编程序对编好的源文件进行汇编。
命令行: masm [*、asm] ↙如果源文件中存在语法错误,则汇编程序将指出错误类型及位置,可根据这些信息重新编辑源文件,直至无语法错误,汇编后,将生成指定名称的目标文件、obj。
使用MASM50汇编程序进行汇编,输入命令行masm或者masm *、asm后,根据提示,输入文件名,在汇编没有错误的情况下,如屏幕所示:汇编程序可生成三个文件,*、obj,*、lst与*、crf。
*、obj-目标文件,用于连接生成可执行文件;*、lst-列表文件(可选),汇编语言汇编的机器语言与汇编语言对照表,可用于调试;*、crf-交叉引用文件(可选),给出了用户定义的所有符号与对每个符号定义、引用的行号。
(3)目标文件的连接命令行:link [*、obj] [*、obj] [*、lib] ↙连接程序,将多个目标程序及库文件,连接生成可执行的*、exe文件,同时可选择生成*、map文件。
*、map-地址映像文件,给出内存地址分配的有关信息。
下图所示屏幕,为Link连接两个目标文件,没有错误的情况下,生成*、exe文件。
汇编语言程序设计上机步骤与调试方法
汇编语言程序设计上机步骤与调试方法在汇编语言程序设计中,上机步骤与调试方法是非常重要的,它们能够帮助程序员更好地编写和调试程序。
本文将介绍汇编语言程序设计的上机步骤以及常用的调试方法,帮助读者更好地理解和应用这些知识。
一、上机步骤1. 准备工作在开始上机之前,我们需要做一些准备工作。
首先,确认计算机已经连接好必要的硬件设备,例如键盘、显示器等。
其次,确保操作系统和开发环境已经正确安装并能够正常运行。
最后,根据需要准备好所需的汇编语言文档和程序样例。
2. 创建新项目在开始编写汇编语言程序之前,我们需要创建一个新的项目。
在项目中,我们可以组织和管理相关的文件和代码。
通常,我们会选择一个合适的集成开发环境(IDE)来创建和管理项目。
3. 编写程序在创建项目之后,我们可以开始编写汇编语言程序。
首先,我们需要了解目标机器的指令集和寄存器,以便正确地编写程序。
然后,根据需求,我们可以使用不同的指令、寄存器和内存来实现所需的功能。
在编写程序的过程中,注意代码的可读性和易于维护性是非常重要的。
4. 调试程序编写完汇编语言程序后,我们需要进行调试,以确保程序的正确性和稳定性。
调试是一个迭代过程,通常包括以下步骤:- 设置断点:在程序中设置断点,以便在特定位置停止程序的执行。
- 单步执行:通过逐条执行程序的指令,我们可以观察程序的执行过程,并检查各寄存器和内存的值。
- 监视变量:在调试过程中,我们可以监视程序中的变量值,以验证其正确性。
- 查看输出:观察程序的输出结果,与预期结果进行比较,以确定程序是否按照预期执行。
- 修复错误:如果发现程序中存在错误,我们需要对程序进行修改和调整,直到问题解决为止。
5. 运行程序在完成程序的调试之后,我们可以运行程序并观察其运行效果。
在运行过程中,我们可以测试程序的各种功能,以确保其正常工作。
二、调试方法1. 打印输出在调试汇编语言程序时,打印输出是一种常用且简单有效的调试方法。
南理工微机实验报告
南理工微机实验报告篇一:南京理工大学微机实验报告微机实验报告实验2.1汇编语言程序的调试与运行思考题:1、带进位加法程序:DISP MACRO XMOV DL,XMOV AH,02HINT 21HENDMDATA SEGMENTDATA1 DB'65087'DATA2 DB'75087'N EQU $-DATA2DATA ENDSSTACK SEGMENT STACKSTA DB 20 DUP (?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXLEA SI,DATA1MOV BX,0MOV CX,NCALL DISPLDISP '+'LEA SI,DATA2MOV BX,0MOV CX,NCALL DISPLDISP '='LEA DI,DATA1MOV CX,NCALL ADDALEA SI,DATA1MOV BX,0MOV CX,NCMP DL,0JZ NEXTDISP '1'NEXT: CALL DISPLDISP 0DHDISP 0AHMOV AX,4C00HINT 21HDISPL PROCDS1:MOV AH,02HMOV DL,[SI+BX]INT 21HINC BXLOOP DS1RETDISPL ENDPADDA PROCPUSH CXMOV BX,0AD1:SUB BYTE PTR [SI+BX],30H SUB BYTE PTR [DI+BX],30HINC BXLOOP AD1POP CXPUSH CXMOV BX,N-1CLCAD2:MOV AL,[SI+BX]ADC AL,[DI+BX]AAAMOV [DI+BX],ALDEC BXLOOP AD2POP CXPUSH CXMOV BX,0MOV DL,0JNC AD3MOV DL,1AD3:ADD BYTE PTR [DI+BX],30H INC BXLOOP AD3POP CXRETADDA ENDPCODE ENDSEND START结果截图:2、上机步骤,调试方法:1、写代码完成功能要求,文件格式为.asm文件(如21si.asm),将文件放入带汇编工具的文件夹中,即含有汇编工具(MASM.EXE)和链接工具(LINK.EXE)的文件夹。
实验一汇编语言程序的调试与运行
实验一汇编语言程序的调试与运行一、实验目的1.熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
2.掌握数据在内存中的存放方式和内存操作数的寻址方式。
3.掌握汇编语言源程序的组成格式。
4.掌握8086/8088指令及伪指令的格式及用法。
5.掌握汇编语言源程序的编辑、调试及运行方法。
二、实验准备知识1.DEBUG程序的启动DEBUG是专门为汇编语言设计的一种汇编语言调试工具,它通过单步执行,设置断点连续执行等方式为汇编语言程序员提供了非常有效的调试手段。
在DOS提示符下,可输入命令:C>DEBUG [d:][path][文件名][ 参数1][参数2]其中文件名是被调试文件的名称,它必须是执行文件(.EXE),两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“–”,此时,可键入所需的DEBUG命令。
在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。
用户可以通过DEBUG的命令对指定文件进行修改,显示和执行。
如果没有文件名,则是以当前内存的内容进行工作。
2.DEBUG的主要命令1)汇编命令A格式:– A [起始地址]功能:该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。
2)反汇编命令U(1)格式1:– U [起始地址]功能:该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。
(2)格式2:– U [起始地址终止地址]格式3:– U [起始地址 L 字节数]功能:该命令对指定范围的内存单元进行反汇编。
例如:3)运行命令G格式:– G [= 起始地址1][断定点地址2[断点地址3……]]功能:从指定地址开始执行程序。
在设定的断点处程序暂停,并显示全部寄存器内容和下一条要执行的指令。
一般设置断点前最好用U命令查看一下指令开始的地址。
断点数最多为10个。
微机实验
实验1 汇编程序的编写与调试实验一、实验目的1. 熟练掌握EMU8086的编写程序,学会用EMU8086调试程序。
2. 深入了解数据在存储器中的存取办法,及堆栈中数据的压入和弹出。
3. 掌握各种寻址办法以及简单指令的执行过程。
二、实验内容1. 设堆栈指针SP=2000H,AX=300H,BX=5000H1)编写程序段完成源程序,实现用堆栈操作指令,将AX的内容和BX的内容进行交换2)编译源程序3)用单步执行来调试可程序,并记录以下内容。
(1)记录SP变化(2)SP所指向堆栈单元内容变化(3)AX,BX的变化CODE SEGMENTASSUME CS:CODE,SS:STACKSTART: MOV SP,2000HMOV AX,300HMOV BX,5000HPUSH AX ;AX=_______H, SP=_______ H ,WORD PTR[0710:_____]=________HPUSH BX ;AX=_______H, SP=_______ H ,WORD PTR[0710:______]=________HPOP AX ;AX=_______H, SP=_______ HPOP BX ;AX=_______H, SP=_______ HMOV AH,4CHINT 21HCODE ENDSEND START2. 设DS=当前段地址,BX=0000H,SI=0002H,存储器偏移地址000H—005H连续单元顺序装入0AH,0BH,0CH,0DH,0EH,0FH。
1)完成源程序2)编译源程序3)用单步执行来调试程序,并记录以下内容。
(1)记录DA1的逻辑地址(2)分析每条指令源地址的形成过程,即源操作数有效地址,并前往存储单元查看源操作数的值。
(3)当条数据传送完毕时,AX中的内容是什么?程序清单如下:DATA SEGMENTDB 0AH,0BH,0CH,0DH,0EH,0FHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV SI,0002MOV BX,0000HMOV AX,BXMOV AX,0004H 源操作数是________MOV AX,[0004H] 源操作数是________,有效地址为________,AX=______MOV AX,[BX] 源操作数是________,有效地址为_________,AX=______MOV AX,0001[BX] 源操作数是________,有效地址为________,AX=______MOV AX,[BX][SI] 源操作数是________,有效地址为_________,AX=______MOV AX,0001[BX][SI] 源操作数是______,有效地址为_______,AX=______HLTCODE ENDSEND START3.利用EMU8086编辑下列程序的源程序文件。
汇编语言调试及运行
汇编语言调试及运行汇编语言程序设计实验实验一汇编语言的调试和运行班级:姓名:学号:日期:实验一汇编语言的调试和运行一、实验目的1、熟悉DEBUG程序和命令,并用它运行基本指令和察看运行结果。
○1怎样调用Debug②如何显示和修改内存单元③如何显示和修改CPU的寄存器④各标志位的状态是如何表示的,怎样修改标志寄存器⑤怎样汇编与反汇编⑥怎样执行程序⑦怎样跟踪程序⑧怎样命名和读写文件⑨怎样退出Debug2、熟悉汇编中通用传送指令。
3、理解指令不同的寻址方式,注意规定或限制使用的寄存器如:双操作数指令中,源操作数和目的操作数的地址不能同时为存储器地址,段跨越前缀不能使用CS,操作对象是地址还是地址中的内容,指令隐含使用的寄存器。
二、实验内容1、键入 DEBUG 进入 DEBUG 控制状态,显示提示符 '- '2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。
3、用命令D100 10F 观察内存中的十六进制码及屏幕右边的ASCII字符。
4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。
5、用命令E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的十六进制数是什么字符的ASCII 码?6、用DEBUG调试和运行下列程序,记录所用的DEBUG命令和运行结果。
MOV WORD PTR [1100],3445MOV WORD PTR [1102],5678MOV WORD PTR [1106],6732MOV AX,[1100]SUB AX,[1102]ADD AX,[1106]MOV [1104],AXHLT其中粗斜体的数字可以修改。
7、内存操作数及各种寻址方式使用 程序内容:MOV AX,1234MOV [1000],AXMOV BX,1002MOV BYTE PTR[BX],20MOV DL,39INC BXMOV [BX],DLDEC DLMOV SI,3MOV [BX+SI],DLMOV [BX+SI+1],DLMOV WORD PTR[BX+SI+2],2846操作步骤1) 用A命令键入上述程序,并用T命令逐条运行。
Removed_实验三 汇编语言程序的调试与运行
GUIZHOU UNIVERSITYDB 10 DUP(?)STACK ENDSCODE SEGMENTASSNME CS:CODE,DS:DATA,SS:STACK START PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV AX,DATAMOV SS,AXMOV AX,IENGTH VARAMOV BX,TYPE VARBMOV CX,IENGTH VARCMOV DX,SIZE VARAMOV AX,4C00HINT 21HCODE ENDSENG START进入DOS方式,运行Edit.在Edit中编辑以上的程序。
将其保存为扩展名是.asm的文件,然后关闭Edit。
进入DOS方式,运行masm.将t1,asm进行编译。
由于编写有误,导致程序出现一个错误,对其进行修改,直到正确为止。
关闭masm,进入DOS方式,运行link进行连接,生成.exe可执行文件。
用R命令显示所有寄存器的内容以及寄存器存储区域中的标注;再用U命令查看内存中机器码的含义。
用T命令跟踪执行内存中的机器码。
2、伪操作学习编辑下列源文件:DATA SEGMENTVAR0 DB 10101010B,'YINGCAI' VAR1 DW 'EFGH'VAR2 DB -374,-1VAR3 DW -1,9080HVAR4 DD FFEEDDCCHDATA ENDSCODE SEGMENTASSNME CS:CODE,DS:DATA START MOV DS,DATAMOV CX,VAR0LEA AL,VAR1CODE ENDSENG START汇编该文件,据提示说明出错语句的错误原因。
进入DOS方式,运行Edit.在Edit中编辑以上的程序。
将其保存为扩展名是.asm的文件,然后关闭Edit。
进入DOS方式,运行masm.将t2,asm进行编译。
由于编写以及程序本身出现的错误,该程序一共程序5的错误,尝试将其找出并进行改正,直到运行成功为止。
汇编语言实验三简单程序的编写与调试
实验三简单程序的编写与调试一&实验目的1.进一步熟悉DEBUG命令;2.熟悉汇编指令的功能及应用;3.掌握简单的汇编语言程序编写与调试。
二&实验环境微型计算机一台DOS或WINDOWS操作系统,MASM开发套件。
三&实验要求1.熟练掌握常用DEBUG命令;2.熟练掌握数据传送指令、比较指令、转移指令和循环指令并能够进行简单程序设计;3.用DEBUG的有关命令调试简单程序。
四&实验内容1、比较AX、BX、CX中带符号数的大小,将最大的数放在AX中。
试编写此程序段。
2、已知存储器中有一个首地址为ARRAY的8个字的数组,现要求数组中的每个数加1(不考虑溢出),试编写完成此功能的程序段。
3、将存储器中从DS:1000H单元开始的10个字节的数据累加求和。
4、使用DEBUG对上述编写的程序进行调试。
五&实验步骤1、比较AX、BX、CX中带符号数的大小,将最大的数放在AX中。
试编写此程序段。
1)程序:cmp ax,bxjge next0xchg ax,bxnext0: cmp ax,cxjge next1xchg ax,cxnext1: …2)使用DEBUG调试:使用r reg命令在ax、bx、cx中预置三个大小不同的数。
使用a命令输入汇编源程序,注意在符号地址输入时,应输入其对应的数值地址。
使用t命令单步执行,再使用r命令可观察到程序全部执行后,ax中内容为最大数。
2、已知存储器中有一个首地址为ARRAY的8个字的数组,现要求数组中的每个数加1(不考虑溢出),试编写完成此功能的程序段。
1)程序:mov cx,8lea bx,arrayrotate: inc word ptr [bx]add bx,2loop rotate2)使用DEBUG调试:使用e命令从某一内存单元开始预置一个8个字的数组。
使用a命令输入汇编源程序,注意在符号地址输入时,应输入其对应的数值地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件实验一汇编语言程序的调试与运行
一.实验目的
1.学习数据传送和算术运算指令的用法
2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
二.实验内容
将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在DATA1和DA TA2为首的5个内存单元中,结果送回DATA1处。
三.程序框图
图1.1 两个多位十进制相加程序流程图
四.程序清单
DISP MACRO X
MOV DL,X ;要显示的字符送DL寄存器
MOV AH,02H ;DOS功能调用号是02H
INT 21H ;21H中断程序是DOS功能调用
ENDM
DATA SEGMENT
DATA1 DB '12732'
DATA2 DB '06815'
N EQU $-DA TA2
DATA ENDS
STACK SEGMENT STACK
STA DB 20 DUP (?)
TOP EQU $-STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DA TA START:MOV AX,DA TA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
LEA SI,DATA1 ;☆
MOV BX,0
MOV CX,N
CALL DISPL ;显示被加数
DISP '+'
LEA SI,DATA2
MOV BX,0
MOV CX,N
CALL DISPL ;显示加数
DISP '='
LEA DI,DA TA1
MOV CX,N
CALL ADDA ;调用加法子程序
LEA SI,DATA1
MOV BX,0
MOV CX,N
CALL DISPL ;显示运算结果
DISP 0DH
DISP 0AH
MOV AX,4C00H
INT 21H
DISPL PROC ;显示子程序
DS1: MOV AH,02H
MOV DL,[SI+BX]
INT 21H
INC BX
LOOP DS1
RET
DISPL ENDP
ADDA PROC ;加法子程序
PUSH CX
MOV BX,0
AD1: SUB BYTE PTR [SI+BX],30H
SUB BYTE PTR [DI+BX],30H
INC BX
LOOP AD1
POP CX
PUSH CX
MOV BX,N-1 ;☆☆
CLC
AD2: MOV AL,[SI+BX]
ADC AL,[DI+BX]
AAA
MOV [DI+BX],AL
DEC BX
LOOP AD2
POP CX
PUSH CX
MOV BX,0 ;☆☆☆
AD3: ADD BYTE PTR [DI+BX],30H
INC BX
LOOP AD3
POP CX
RET ;☆☆☆☆
ADDA ENDP
CODE ENDS
END START
五.调试步骤
1.编辑源程序,建立一个以后缀为.ASM的文件.
2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。
无错时继续第3步。
3.连接目标程序,产生可执行程序。
4.TDEBUG调试可执行程序,记录数据段DS:0~DS:10的内容。
5.在操作系统状态下,运行程序,并记录屏幕显示内容。
六.思考题
1.将上述程序改为5位数相加,结果为6位数的加法程序。
(需考虑进位)
新的程序清单:
DISP MACRO X
MOV DL,X ;要显示的字符送DL寄存器
MOV AH,02H ;DOS功能调用号是02H
INT 21H ;21H中断程序是DOS功能调用ENDM
DATA SEGMENT
DATA1 DB '82732' ;修改后的5位数,相加为6位数!
DATA2 DB '36815'
N EQU $-DA TA2
DATA ENDS
STACK SEGMENT STACK
STA DB 20 DUP (?)
TOP EQU $-STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DA TA
START:MOV AX,DA TA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
LEA SI,DATA1 ;☆
MOV BX,0
MOV CX,N
CALL DISPL ;显示被加数
DISP '+'
LEA SI,DATA2
MOV BX,0
MOV CX,N
CALL DISPL ;显示加数
DISP '='
LEA DI,DA TA1
MOV CX,N
CALL ADDA ;调用加法子程序
LEA SI,DATA1
MOV BX,0
MOV CX,N
CALL DISPL ;显示运算结果
DISP 0DH
DISP 0AH
MOV AX,4C00H
INT 21H
DISPL PROC ;显示子程序
DS1: MOV AH,02H
MOV DL,[SI+BX]
INT 21H
INC BX
LOOP DS1
RET
DISPL ENDP
ADDA PROC ;加法子程序PUSH CX
MOV BX,0
AD1: SUB BYTE PTR [SI+BX],30H
SUB BYTE PTR [DI+BX],30H
INC BX
LOOP AD1
POP CX
PUSH CX
MOV BX,N-1 ;☆☆
CLC
AD2: MOV AL,[SI+BX]
ADC AL,[DI+BX]
AAA
MOV [DI+BX],AL
DEC BX
LOOP AD2
POP CX
PUSH CX
MOV BX,0 ;☆☆☆
AD3: ADD BYTE PTR [DI+BX],30H
INC BX
LOOP AD3
POP CX
RET ;☆☆☆☆
ADDA ENDP
CODE ENDS
END START
2.简单叙述上机步骤,调试方法。
上机步骤及调试
①编写代码完成功能要求,文件格式为.asm 文件(如文件名为a.asm),将文件放入带汇编工具的文件夹中,即含有汇编工具(MASM.EXE)和链接工具(LINK.EXE)的文件夹。
②打开运行窗口,输入“cmd”然后确定。
启动命令行,进入上述文件夹
输入:tasm a.asm
回车后编译产生a.obj文件
再输入:link a.obj
回车后链接产生a.exe文件
最后输入:a.exe
回车后运行结果如图1
图1.运行结果
如果程序有错误,编译时会产生错误提示,指出错误的位置和错误类型及错误码,改正错误后再重新编译链接,直到没有错误和编译链接成功。
③启动TD并载入add.exe ,在代码段可以看到程序指令,部分符号已被实际地址或数值替换表示。
④查看数据区的数值:
右击选择数据区的菜单中的Goto,在其输入框内输入要查看的数据区地址,如cs:000FH,如图2和图3;
回车确认后即可查看数据区从段地址为CS、偏移地址为000FH开始的存储情况
图2.goto
图3.找到CS字段
○5设置断点
选中“cs:000FH”段,然后运行菜单栏“Breakpoints”,在该处设置断点!断点设置完成后再运行程序.
○6查看DS
同样用Goto找到想要查看的DS,
图4.找到对应的DS
○7记录DS
[注意]
1、将源代码部分直接拷贝到文本文件中,再将其扩展名改为.asm。
2、使用个人主页中的汇编语言编译器(TASM.EXE或MASM.EXE之一均可),将1中的
源文件编译成扩展名为.obj的目标文件;再将其链接成为可执行文件(使用TLINK.EXE文件或LINK.EXE文件之一均可);
例如:假设源文件名为temp.asm。
汇编过程如下:masm temp.asm
link temp.obj
执行temp.exe文件即可
3、TDEBUG 程序可在个人主页中下载;直接双击运行;
4、程序清单的开始定义了一段宏,作用是显示X字符;宏的作用相当于一个函数,可以
在后续的程序中直接调用
5、DISP 0DH 和DISP 0AH是显示换行回车符。