实验二-汇编语言程序的上机步骤
实验二_汇编语言程序上机过程

实验二:汇编语言程序上机过程实验目的:1、掌握常用工具EDIT,MASM和LINK的使用。
2、伪指令:SEGMENT, ENDS, ASSUME, END, OFFSET, DUP。
3、掌握汇编源程序的基本架构4、了解.EXE文件及用INT 21H 4C号功能返回系统的方法。
源程序1:;This is an simple example;--------------------------------------------data segment ;define data segmentmsg db 'hello,everybody!',0dh,0ah,'$'data ends;-------------------------------------------code segment ;define code segmentassume ds:data,cs:codestart:mov dx,data ;set ds segmentmov ds,dxlea dx,msg ;display stringmov ah,9int 21hmov ax,4c00h ; returnint 21hcode ends;--------------------------------------------end start源程序2:;program title goes here----ex_movs;*********************************************data segment ;define data segmentsource_buffer db 40 dup('a')data ends;****************************************************** extra segment ;define extra segmentdest_buffer db 40 dup(?)extra ends;****************************************************** code segment ;define code segment;------------------------------------------------------main proc far ;main part of programassume cs:code, ds:data, es:extrastart:;set up stack for returnpush ds ;save old data segmentsub ax, ax ;put zero in AXpush ax ;save it on stack;set DS register to current data segmentmov ax, data ;data segment addrmov ds, ax ;into DS register;set ES register to current extra segmentmov ax, extra ;extra segmentmov es, ax ;into ES register;main part of program goes herelea si, source_buffer ;put offset addr of source buffer in SI lea di,dest_buffer ;put offset addr of dest buffer in DIcld ;set DF flag to forwardmov cx,40 ;put count in CXrep movsb ;mov entire stringret ;return to dosmain endp ;end of main part of program;------------------------------------------------------------code e nds ;end of code segment;************************************************************end start ;end assembly实验步骤:1、用文字编辑工具EDIT将源程序输入,其扩展名为.ASM。
汇编语言程序的上机过程

汇编语言的上机过程汇编语言程序的上机过程包括编辑、汇编、连接和执行这四个步骤。
汇编程序我们提供宏汇编程序MASM5.0和MASM6.14两个版本。
1、建立源程序文件建立和编辑汇编语言源程序可以使用EDIT、记事本、写字本,也可以使用TC等来输入源程序。
保存时,源程序文件的扩展名必须是ASM。
练习:(1)在DOS下用编辑软件EDIT建立如下源程序文件,将文件保存为Hello.ASM,保存在MASM5目录下。
(调用命令“C:\EDIT”进入EDIT编辑器。
)源程序文件如下:DSEG SEGMENTMESSAGE DB 'HOW DO YOU DO?',0DH,0AH,24HDSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGBEGIN:MOV AX,DSEGMOV DS,AXMOV DX,OFFSET MESSAGEMOV AH,9INT 21HMOV AH,4CHINT 21HCSEG ENDSEND BEGIN(2)编程计算1+2+3+ ……+100,和放在AX寄存器中,要求用循环实现。
对于MASM5.0和MASM6.14两个版本,编译和连接的方法有所不同。
以下分别就两个版本的编译和连接的方法进行讲解。
如果使用MASM5.0的话,操作方法如下(以HELLO.ASM源程序文件为例):2、对源程序进行汇编,生成目标文件HELLO.OBJ。
操作:(1)在DOS下进入MASM5.0的目录,如C:\MASM5>(2)敲入命令: MASM HELLO说明:.obj文件:目标代码文件,纯二进制代码文件,不能直接显示在屏幕上。
.lst文件:包含源程序中各语句及其对应的目标代码,各语句的偏移量等相关信息,对调试程序有帮助,但一般情况不需要。
.crf文件:交叉索引文件,给出源程序中定义的符号引用情况,初学时不需建立。
3、连接目标文件,生成执行文件HELLO.EXE,操作:敲入命令LINK HELLO说明:.EXE文件:可执行文件.MAP文件:连接映象文件,包括各个段在存储器中的分配情况,初学时不需要。
汇编语言上机实验内容

实验一上机操作一、实验目的把握汇编语言程序编辑、汇编、连接、运行和利用DEBUG调试程序的方式。
二、实验设备PC机及相应的软件。
三、实验内容及步骤1、编辑一个指定的汇编语言源程序,并对其进行汇编、连接和运行。
2、利用DEBUG进行程序调试,把握经常使用命令的利用方式,观看运行结果。
3、汇编语言上机操作,见图1-1 汇编语言上机操作流程。
上机操作进程:开始输入cmd 确认后显示:C:\Documents and setting\Administrator>-输入 cd c:\masm 后显示:c:\masm>-c:\masm>EDITc:\masm>MASM ABC;假设有语法错,回EDIT下改该程序c:\masm>LINK ABC;假设有错,回EDIT下改程序c:\masm>ABC假设运行结果错,回EDIT下改程序或在DEBUG下调试,找缘故。
c:\masm>DEBUG手写源程序图 1-1 汇编语言上机操作流程汇编语言程序举例例1:将BL寄放器的内容按二进制形式显示出来。
设:(BL)=01010011B分析:采纳2号功能挪用,别离输出30 31 30 31 30 30 31 31 显示:01010011参考程序:CODE SEGMENTASSUME CS: CODESTART:MOV CX ,8 ;显示字符个数为8MOV BL ,53HNEXT:SHL BL ,1 ;将显示位移至CF中JC ONE ;CF=1?MOV DL ,30H ;CF=0,将0的ASCII放在DL中JMP EXITONE:MOV DL ,31H ;CF=1,将1的ASCII放在DL中EXIT:MOV AH ,2INT 21H ;挪用DOS功能显示DEC CX ;循环次数减1JNZ NEXT ;判定是不是终止MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START上机操作:c:\masm>EDIT ;编辑源程序c:\masm>MASM ShowBL ;汇编成Microsoft (R) Macro Assembler VersionCopyright (C) Microsoft Corp 1981,1988. All rights reserved.48912 + 447243 Bytes symbol space free0 Warning Errors0 Severe Errorsc:\masm>LINK ShowBL ;连接成Microsoft (R) Overlay Linker VersionCopyright (C) Microsoft Corp 1983-1987. All rights reserved.LINK : warning L4021: no stack segmentc:\masm>ShowBL ;装载并执行01010011 ;屏幕显示c:\masm>-在DEBUG下查看的装入情形:c:\masm>DEBUG- R ;查看当前寄放器内容AX=0000 BX=0000 CX=001B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0B51 ES=0B51 SS=0B61 CS=0B61 IP=0000 NV UP EI PL NZ NA PO NC B353 MOV BL,53- U CS:0 ;查看程序0B61:0000 B353 MOV BL,530B61:0002 B90800 MOV CX,00080B61:0005 D0E3 SHL BL,10B61:0007 7205 JB 000E…….0B61:0017 B44C MOV AH,4C0B61:0019 CD21 INT 21…….-G ;执行程序01010011Program terminated normally-例2:将某段中的字符串“Hello!”传送到另一段中。
实验二汇编语言上机过程实验(机制本)

实验二汇编语言上机过程实验一、实验目的1、了解和掌握由键盘接收数据,并显示其运行结果的方法。
2、掌握INT 21H 的09H和0AH,01H和02H的功能。
3、熟悉在PC机上建立,汇编,链接,调试和运行8086/8088汇编语言程序的过程。
二、实验内容1、汇编语言源程序的上机过程:①将masm5.zip文件下载放在D:\masm文件夹下, 在该文件夹下将压缩文件解压缩。
②利用编辑器建立一个ASM 源文件。
Edit ,记事本等编辑器文件以文件名.asm文件名保存。
最好保存在D:\masm文件夹下。
(即:D:\masm\文件名.asm)文件名自取。
③点击开始菜单,运行↙>cmd↙>d: ↙>cd masm↙>masm 文件名 3下回车>link 文件名 3下回车>debug 文件名.exe>g ↙其中利用MASM.EXE对源程序进行编译。
生成中间代码文件:文件名.obj。
利用link.exe对obj文件进行连接。
生成最终目标代码文件:文件名.exe。
运行可执行文件:文件名.exe,并利用debug调试工具查看结果。
2、编写一个完整程序,在屏幕上显示字符串How are you!data segmentstring db 'how are you!$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset stringmov ah,9int 21hmov ah,4chint 21hcode endsend start三、实验器材IBM PC 微机一台四、实验报告要求1、实验报告应包括实验目的,实验内容,实验步骤,实验思考题2、完成实验思考题,如有编程题,写出调试正确的程序,并给程序加注释,写出实验中所记录下的内存数据存放格式。
五、实验思考题下面的汇编语言源程序有错误的,试给程序加注释。
实验2-汇编语言上机环境及基本操作

实验二汇编语言上机环境及基本操作一、实验目的及要求1 •掌握汇编语言源程序的书写格式和要求2 •掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
3. 学会使用记事本、MASMLINK、DEBU等软件工具。
4 •掌握将数据和代码都放在代码段的程序设计方法。
5. 掌握将数据和代码放不同段的程序设计方法。
6. 掌握用LOOP旨令构建循环程序二、实验内容1.练习:计算机上建立、汇编、连接、调试及运行程序的方法编写程序,计算2A121)在D盘建立一文件夹,命名(例如101),将和复制到此文件夹;在此文件夹中新建文本文件,文件名改为汇编源程序名,例如:用记事本打开,输入源程序并保存。
源程序:assume cs:codecode segme ntmov ax,2mov cx,11s: add ax,axloop smov ax,4c00hint 21hcode endsend2) 汇编源程序点开始菜单,点运行,输入CMD按回车,进入命令提示符窗口;输入D:并回车,打开D盘,再输入CD 101并回车,进入101文件夹;输入MASM 2e12并回车,一路按回车,进行汇编汇编过程的错误分警告错误(Warning Errors )和严重错误(Severe Errors) 两种。
其中警告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数、错误的性质。
这时,就要对错误进行分析,找出原因和问题,然后再调用屏幕编辑程序加以修改,修改以后再重新汇编,一直到汇编无错误为止。
汇编通过后,会生成目标文件3) 连接目标程序、输入LINK 2e12并回车,一路按回车连接成功后,会生成可执行文件4) 跟踪并调试可执行程序输入DEBUGS按回车,进入DEBU调试程序单步运行程序,跟踪程序,每执行一条指令,检查相关寄存器或存储器的数据,看看程序是否按我们的意愿运行,若有出入,修改源程序,重新汇编、连接、运行调试,直到成功编写程序计算100X 300,用循环结构实现完成否2 •将数据和代码都放在代码段的程序设计方法程序功能:将8个字数据累加求和,存入AX便于大家检查验证,将8个字设为1, 2,3, 4, 5, 6,7, 8assume cs:codesgcodesg segme ntdw 1,2,3,4,5,6,7,8start : mov bx,0mov ax,0v1.0可编辑可修改mov cx,8s: add ax,cs:[bx]add bx,2loop smov ax,4c00hint 21hcodesg endsend start调试程序,结果是否正确若将程序中的标号start去掉,结果如何DS吗add ax,cs:[bx]语句中段前缀为什么用CS能去掉吗能改为3•将数据和代码都放在不同的段,实现题2的功能assume cs:codesg,ds:datasgdatasg segme ntarray dw 1,2,3,4,5,6,7,8datasg endscodesg segme ntstart :mov ax,datasgmov ds,axmov bx,offset arraymov ax,0mov cx,8s: add ax,ds:[bx]add bx,2loop s mov ax,4c00h int 21hcodesg endsend start调试程序,结果如何比较3和2的源程序,多段程序设计与单一段程序设计4. 对题3的程序稍做修改,求出8个数中的最小数和最大数分别存入MIN和MAX 单元(若能力有限,只求其中之一)提示:用比较指令(P62)结合条件转移指令(P89),产生不同的程序分支要求简要描述解题思路,源程序要加上必要的注释。
第八讲(2) 汇编语言简单上机过程

本章到此结束
谢谢!
结 束放映
返回本章首页
第一章
微机基础知识概述
一、指出下列指令的寻址方式 MOV AX, 06H MOV BX, [BX+SI]
MOV AX, [2000H]
MOV CX, ALPHA[BP+DI]
JMP
CWD
BX
MOV AL, [DI]
第一章
微机基础知识概述
二、汇编后
DATA SEGMENT
Source filename [.ASM]:文件名
第一章
微机基础知识概述
Object filename[文件名.OBJ]
Source listing[NUL.LST]:文件名
Cross reference[NUL.CRF]:文件名
0 Warning Error 0 Severe Errors
返回本节
实验六、8259应用编程1、2。
第一章
微机基础知识概述
实验五:微机原理及接口实验指导书
1、实验七:8253定时/计数应用实验; 2、实验八:8255并行接口应用实验。
第一章
微机基础知识概述
实验六:综合实验 1、分析所使用的微机实验设备的系统组成, 画出结构图; 2、使用现有微机原理实验设备、设计综合 实验; 3、要求实验中应包含8259、8255、8253接 口芯片。
第一章
微机基础知识概述
四、动态调试程序
提供多种程序的运行方法和检测手段,可观察各
个寄存器、内存单元及标志变化情况。
C:\MASM>DEBUG 文件名.exe
_A 地址 送入程序。 _G [起地址] [末地址] 不写地址执行刚刚汇编过的程序。
实验2— 汇编语言上机过程

实验2 汇编语言上机过程一、实验目的掌握汇编语言上机过程,熟练使用EDIT,MASM,LINK,DEBUG命令。
二、实验内容在显示器上显示一段字符串。
三、实验步骤1、进入DOS ,输入D:回车2、输入D:\>CD MASM5输入D:\MASM5>EDIT 123.ASM此时进入EDIT全屏编辑窗口。
输入源程序,并且存盘。
ALT键可以激活菜单,打开FILE下拉菜单中的SA VE或SA VE AS保存编辑好的文件,然后退出。
此时,源程序建立完毕。
3、用MASM产生OBJ文件输入MASM 123.ASM 回车第一个是OBJ文件,回车确定,即建立目标文件。
第二个是LIST列表文件,它同时列出源程序和机器码程序清单,并给出符号表,如需要可输入123.LST,不需要直接回车。
第三个CRF文件用来产生交叉引用表,一般程序不需要建立此文件,直接回车。
注:警告错误和严重错误必须都为0,编译才算通过,如不为0,则记住错误行号,返回EDIT 修改程序,然后再编译。
4、用LINK程序产生EXE文件输入LINK 123.OBJ 回车LINK有两个输入文件OBJ(目标文件)和LIB(库文件),无特殊需要,对LIB直接回车。
LINK的输出文件,一个是EXE文件,另一个是MAP文件,它是连接文件的列表文件,称为连接映象,它给出每个段存储器的分配情况。
如没有严重错误,将产生EXE文件,如有错误重新执行步骤2、3、45、程序执行输入123.EXE 回车查看屏幕显示,是否和预期结果一致。
四、程序清单DA TA SEGMENTBUFF DB 'How are you!','$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV AH,9HMOV DX,OFFSET BUFFINT 21HMOV AX,4C00HINT 21HCODE ENDSEND START。
汇编语言上机过程

汇编语言上机过程一、用汇编语言编写的源程序,使之运行必须经过以下几个步骤:1.用编辑程序建立一个扩展名为.ASM的汇编语言源程序文件。
2.调汇编程序(MASM),对源程序汇编,生成机器码目标文件,扩展名为.OBJ。
3.连接(LINK)目标文件,生成可执行文件,扩展名为.EXE。
4.运行可执行文件。
5.如果程序运行有错,可调用DEBUG程序对.EXE文件进行调试。
二、编辑汇编语言源程序可用各种编辑软件来建立汇编语言源程序,例如记事本。
先保存为.TXT文件,然后改为.ASM文件,方法是在windows界面:工具——文件夹选项——查看——将“隐藏已知文件的扩展名”选项去掉。
然后将扩展名.TXT直接改为.ASM,汇编程序文件名称由用户自定(只能用英文字母、数字下划线)。
三、编译汇编语言源程序用MASM程序汇编源程序,生成浮动目标程序(即扩展名为.OBJ的文件),这里产生的是浮动的目标模块,是不可执行程序。
“开始”菜单->运行->键入“cmd”->确定,打开DOS命令行窗口。
汇编前,在DOS状态下用下列命令可以打开源程序,例如打开z1.asm的方法是:>type z1.asm<CR>则屏幕上显示出z1.asm的源程序。
汇编z1.asm文件过程的屏幕操作与显示如下:>masm z1.asm<CR>屏幕显示以下各行(一次一行),提示用户所应键入的信息:OBJECT FILENAME[Z1.OBJ]<CR>SOURCE LISTING[NUL.LST]:<CR>CROSS REFERENCE[NUL.CRF]:<CR>产生目标文件(.OBJ)是汇编的主要目的,通常用户可以直接回车,表示采用默认文件名。
(.LST)文件为列表文件,提供全部汇编后的信息。
若用户不需要这些信息,可直接回车。
(.CRF)文件为交义引用文件,要建立交叉引用文件,则键入文件名。
MASM将为用户建立扩展名为(.CRF)的交叉引用文件,这里所得到的交叉引用文件,必须调用CREF程序处理,以建立一个按字母顺序排列的能被显示或打印的源程序中的符号(包括变量)表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二汇编语言程序的上机步骤
一、实验目的
熟练掌握汇编语言程序的上机步骤和程序调试方法。
二、实验内容及步骤
1.通过CMD命令进入DOS方式。
2.通过CD命令和MD命令建立和进入用户程序目录。
3.将实验一笑脸程序补充为一个完整的汇编语言程序。
4.熟读第五部分内容:环境简介
5.通过编辑——汇编——连接步骤生成.EXE形式的笑脸程序Smile.exe。
6.运行Smile.exe程序,观察运行结果。
7.用“DUBUG Smile.exe”命令将Smile.exe程序装入内存,通过R命令读取Smile.exe程序在内存的地址。
8.用反汇编U命令观察笑脸程序。
9.重复实验一“使用DEBUG调试程序”中的步骤(4)和(5),观察程序运行结果。
10.验证题
以下程序段用以显示信息“Press any key when you ready.”。
在用户按下任一键后,另起一行显示信息“Input your password:”。
DSEG SEGMENT use16
MESS1 DB ‘Press any key when you ready’,0AH,0DH,‘$’
MESS2 DB ‘Input your password:’,’$’
DSEG ENDS
SSEG SEGMENT STACK
DB 80H DUP(0)
SSEG ENDS
CSEG SEGMENT
ASSUME DS:DSEG,SS:SSEG,CS:CSEG
START:MOV AX,DSEG
MOV DS,AX
MOV DX,OFFSET MESS1
MOV AH,09H
INT 21H ;显示“press any key when you ready.”
MOV AH,08H
INT 21H ;等待用户按任一键
MOV DX,OFFSET MESS2
MOV AH,09H
INT 21H ;显示“Input your password:”
MOV AH,4CH
INT 21H
CSEG ENDS
END START
三、实验要求
认真完成实验每一步骤,详细记录实验过程、现象和结果,及时整理实验报告。
四、实验作业
1.分析DEBUG下输入并调试程序和完整汇编语言程序调试方式的优缺点。
2.编写一个显示全部26个大写A-Z字符的程序段,并在DUBUG下调试通过。
3.编写一程序,作BCD数的四则运算,在程序中设置非压缩BCD数X,从键盘输入一位十进制数Y。
将X+Y、X-Y、X*Y及X/Y(不考虑余数)分别送ANS _A,ANS_S,ANS_M及ANS_D变量。
上机调试程序;检查执行结果。
4.编写一程序,实现两个三字节无符号数DATA1和DATA2的相加,结果送四字节变量ANS。
上机调试程序,检查执行结果。
5.将上述程序补充为完整的汇编语言程序,通过步骤编辑、汇编、连接,生成.EXE文件,并运行之。
观察程序运行结果。
6.写出实验体会。
五、汇编环境简介
1.编辑程序编辑汇编语言源程序
使用文本编辑程序(如DOS 自带的EDIT.EXE)进行文件的编辑建立汇编语言程序。
格式:EDIT 文件名.ASM (回车)
2.汇编程序生成目标程序
经过编辑命令建立的汇编语言源程序使用汇编程序(如微软公司的MASM.EXE)编译成目标程序。
格式:MASM 文件名
在汇编程序调入后,先显示版本号,然后出现以下第一行提示:
Object filename [源文件名.OBJ]: ;默认该文件名回车,或者输入新文件名。
Source Listing [NUL.LST] : 源文件名或其他 ;输入文件名可建立列表文件。
Cross Reference [NUL.CRF]: 源文件名或其他 ;输入文件名可建立交叉索引文件。
Warning Errors ;显示警告错误个数
severe Errors ;显示严重错误个数
如果汇编过程中发现源程序有错误,由以上两种错误类型分别列出。
此时可分析错误原因,返回编辑程序修改源程序。
汇编程序出错信息见《汇编程序出错信息表》, 注意出错的类型及出错的源文件对应行。
若不需要产生 .LST 和 .CRF 文件, 可在 > MASM 文件名命令后加";",即> MASM 文件名;
3.链接程序生成可执行文件
汇编后建立的目标码文件,必须经过链接程序(如LINK.EXE)完成链接后才能生成可执行的命令文件。
格式:LINK 文件名 ;回车后调入链接程序,此时屏幕显示:
Run File [文件名.EXE]: ;回车默认该文件名。
List File [NUL.MAP]: ;输入文件名可建立映像文件。
Libraries [ .LIB]: ;回车,汇编语言没有库文件。
Warning: ;提示错误。
如果有错误,须返回编辑程序重新修改源程序。
若不需要产生 .MAP文件, 可在 > MASM 文件名命令后加";",即
> MASM 文件名;
若要生成 .COM 文件, 则用 EXE2BIN 实现:
> EXE2BIN A.EXE
4.汇编语言动态调试工具调试汇编源程序
DEBUG 是专为汇编语言设计的一种调试工具,可用来检查、修改存储单元和寄存器的内容,装入、存储及启动运行程序,也可用 DEBUG 汇编简单的汇编语言程序。
格式:DEBUG 文件名.EXE
- ; "-" 是 DEBUG 的提示符
DEBUG 下的基本命令及格式:
命令任务格式
A(Assmble) 汇编语句 A[address]
C(Compare) 比较内存 C range address
D(Dump) 显示内存 D [address]
E(Enter) 改变内存 E address list
F(Fill) 填充内存 F range list
G(GO) 执行程序 G [address]
H(Hexarthmetic) 十六进制运算 H Value Value
I(Input) 输入 I port address
L(Load) 装入内存 L[address]
M(Move) 传送内存 M range range
N(Name) 定义文件 N [d:][path]filename[.com]
O(out put) 输出字节 O port address byte
Q(Quit) 退出 DEBUG状态 Q
R((Register) 显示寄存器 R[register name]
S(Search) 检索字符 S rang list
T(Trace) 单步/多步跟踪 T orT[address][value]
U(Unassmble) 反汇编 U [address]orU[range]
W(Write) 文件或数据写盘 W [address[drive sector sector]] 六、汇编程序出错信息表。