汇编语言程序设计的实验环境及实验步骤知识提要:1、汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行:(1)编辑源程序(生成.ASM文件)(2)汇编源程序(.ASM - .OBJ)(3)连接目标程序(.OBJ - .EXE )(4)调试可执行程序(使用调试程序Debug调试生成的.EXE文件)(5)运行程序输出结果。
2、Windows环境下的汇编语言集成编程环境的使用实验一汇编语言上机实验(一)一、实验要求和目的1、掌握汇编语言程序设计的基本方法和技能;2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序;3、熟练掌握宏汇编程序MASM的使用;4、熟练掌握连接程序LINK的使用。
二、软硬件环境1、硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;2、软件环境:装有MASM、DEBUG、LINK等应用程序。
三、实验内容与步骤1、实验内容编写程序,判断一个年份是否是闰年。
2、实验步骤汇编语言程序设计上机过程如图1.1所示。
图1.1汇编语言程序上机过程(一)用编辑程序EDIT建立汇编语言源程序文件(ASM文件)建议源程序存放的目录名为MASM 中,MASM 子目录在D 盘的根目录下。
可以在DOS 模式下用编辑程序EDIT.EXE 建立汇编语言源程序文件ABC.ASM ,注意 文件名的扩展名必须是.ASM 。
也可以在Windows 2000或者在Windows XP 环境下鼠标单击 “开始” f “运行”,在“运行”中输入七乂口”进入DOS 模式,运行EDIT 软件,例如: C:\documents and settings\administrator>cd\ *进入 C 盘根 目录C:\>d: *进入D 盘*在D 盘创建MASM 文件夹*进入MASM 文件夹*建立 run 源文件进入EDIT 的程序编辑画面时,编写程序,判断一个年份是否是闰年的汇编语言源程序, 输入汇编语言源程序如下:DATA SEGMENTINFONDB 0DH,0AH,'Please input a year: $' Y DB 0DH,0AH,'This is a leap year! $, N DB 0DH,0AH,'This is not a leap year! W DW 0 BUFDB 8 DB ?DB 8 DUP(?) DATA ENDS STACKSEGMENT 'stack'DB 200 DUP(0)STACK ENDS CODESEGMENTASSUME DS:DATA,SS:STACK,CS:CODE START:MOV AX,DATA MOV DS,AXLEA DX,INFONMOV AH,9INT 21HLEA DX,BUFMOV AH,10INT 21HMOV CL, [BUF+1]LEA DI,BUF+2CALL DATACATECALL IFYEARSJC A1LEA DX,NMOV AH,9INT 21HJMP EXIT A1:LEA DX,Y MOV AH,9INT 21H EXIT:MOV AH,4CHINT21H DATACATE PROC NEARD:\>md masm D:\>cd masm D:\masm>edit run.asmLEA SI,BUF+MOV BX,0X3:MOV AL ,[SI]SUB AL ,30HMOV AH,0XCHG AX,BXMOV DX,10DMUL DXXCHG AX,BXADD BX,AXINC SILOOP X3MOV W,BXRETDATACATE ENDPIFYEARS PROC NEARPUSH BXPUSH CXPUSH DXMOV AX,WMOV CX,AXMOV DX,0MOV BX,4DIV BXCMP DX,0JNZ LAB1MOV AX,CXMOV BX,100DIV BXCMP DX,0JNZ LAB2MOV AX,CXMOV BX,400DIV BXCMP DX,0JZ LAB2LAB1: CLCJMP LAB3LAB2: STCLAB3: POP DXPOP CXPOP BXRETIFYEARS ENDPCODE ENDSEND START源程序输入完毕后,用Alt-F打开File菜单,用其中的Save功能将文件存盘,然后exit 退出。
此时,在D:\MASM>中已经建立RUN.ASM源文件。
(二)用汇编程序MASM将ASM文件汇编成目标程序文件(OBJ文件)当源程序建立以后,我们用汇编程序MASM对RUN.ASM源程序文件进行汇编,以便产生机器码的目标程序文件RUN.OBJ,其操作步骤如下:D:\masm>masm run *调用masm 程序Microsoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981 -985,1987. All rights reserved.Object filename [RUN.OBJ]:*询问目标程序文件名,默认回车Source listing [NUL.LST]:*是否建立列表文件,默认不建立回车Cross-reference [NUL.CRF]:*是否建立交叉索引文件,默认不建立回车50674 + 450574 Bytes symbol space free 0 Warning Errors 0 Severe Errors 此时,在D:\MASM>中已经生成RUN.OBJ目标程序文件。
(三)用连接程序LINK生成可执行程序文件(EXE文件)经汇编后产生的二进制的目标程序文件(OBJ文件)并不是可执行程序文件(EXE文件),必须经连接以后,才能成为可执行文件。
连接过程如下:D:\MASM>link run *调用link 程序Microsoft (R) Overlay Linker Version 3.60Copyright (C) Microsoft Corp 1983-1987. All rights reserved.Run File [RUN.EXE]:*询问可执行文件名,默认回车List File [NUL.MAP]:*是否建立连接映象文件,默认不建立回车Libraries [.LIB]:*是否用到库文件,若无特殊需要,直接回车上述提示行回答后,连接程序开始连接。
若连接过程中有错,则显示错误信息,错误分析清楚后,要重新调入编辑程序进行修改,然后重新汇编,再经过连接,直至无错为止。
连接以后,便在D:\MASM>中产生了可执行程序文件(RUN.EXE文件)。
(四)程序的执行当我们建立了可执行文件RUN.EXE后,就可直接在DOS下执行该程序:D:\MASM>run 根据程序提示,输入一个年份,计算机会输出是否闰年的结果。
四、实验要求(1)掌握汇编语言程序设计上机过程;(2)回答思考问题;(3)记录实验结果,写实验报告。
五、思考(1)汇编过程中MASM ABC和MASM ABC.ASM的结果是否一致。
(2)连接过程中LINK ABC和LINK ABC.OBJ的结果是否一致。
实验二汇编语言上机实验(二)一、实验要求和目的熟练掌握动态调试程序DEBUG的使用;二、软硬件环境1、硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;2、软件环境:装有MASM、Debug、LINK应等用程序。
三、实验内容与步骤1、实验内容(1)进入和退出Debug程序(2)学会Debug中的D命令、E命令、R命令、T命令、A命令、G命令、U命令等的使用。
(3)使用Debug调试程序调试汇编程序。
2、实验步骤(1)在DOS提示符下,进入Debug程序。
(2)详细记录每一步所用的命令,以及查看结果的方法和具体结果。
(3)现有一个双字加法源程序如下,其中存在错误。
现假设已汇编、连结生成了可执行文件HB.EXE,存放在D:\MASM目录下。
请使用Debug对其进行调试。
Code SEGMENTASSUME CS:code,DS:codeORG 100H ;从100H处开始存放下歹U指令Start:MOV AX,code ;将05置成code段的首地址MOV DS,AXMOV SI,200H ;取第一个数的首地址MOV AX,[SI] ;将第一个数的低16位取到AXMOV DI,204H ;取第二个数的首地址ADD AX,[DI] ;第一个数和第二个数的低16应相加MOV [SI+8],AX ;低16位相加的结果送到208H和209H单元MOV AX,[SI+2] ;取第一个数的高16位送到AX中ADD AX,[DI+2] ;两个数的高16位相加MOV [SI+0AH],AX ;高16位相加的结果送到20AH, 20BH单元MOV AX,4C00H ;使用DOS的4CH号功能调用INT 21H ;进入功能调用,返回DOSORG 200H ;从200H处开始存放下歹1」数据DD 12345678h,654387A9h,0h ;被加数、加数、和Code ENDSEND start调试过程:① 进入Debug并装入可执行文件HB.EXED:\MASM>Debug HB.EXE②观察寄存器初始状态-RAX=0000 BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=1892 ES=1892 SS=18A2 CS=18A2 IP=0100 NV UP EI PL NZ NA PO NC18A2:0100 B8A218 MOV AX,18A2③以单步工作方式开始运行程序-TAX=18A2 BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=1892 ES=1892 SS=18A2 CS=18A2 IP=0103 NV UP EI PL NZ NA PO NC18A2:0103 8ED8 MOV DS,AX-TAX=18A2 BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=18A2 ES=1892 SS=18A2 CS=18A2 IP=0105 NV UP EI PL NZ NA PO NC18A2:0105 BE0002 MOV SI,0200④ 观察用户程序数据段初始内容-D 200 20F18A2:0200 78 56 34 12 A9 87 43 65-00 00 00 00 00 74 13 50 xV4...Ce t.P ⑤ 连续工作方式运行程序至返回DOS前(设断点),查看运行结果。