汇编语言上机过程
实验三 宏汇编语言程序上机过程及调试1

实验三宏汇编语言程序上机过程及调试一、实验目的:1、掌握常用工具软件 EDIT,MASM和LINK的使用。
2、伪指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP。
3、利用的 1号功能实现键盘输入的方法。
4、了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法。
二、宏汇编调试步骤:1、输入程序:用文字编辑工具(记事本或EDIT)将源程序输入,命名为*.ASM,保存到c:\masm5目录中;2、进入dos命令行:开始\运行\cmd 回车;3、进入masm目录:在dos操作符下键入 cd c:\masm5 回车;4、编译文件:在dos操作符下键入 masm *.asm,生成*.OBJ文件和*.LST文件;5、链接文件:在dos操作符下键入 link *.Obj,生成可执行文件*.exe6、运行:在dos操作符下键入 *.exe程序:data segmentmessage db 'This is a sample program of keyboard and disply'db 0dh,0ah,'Please strike the key!',0dh,0ah,'$' data endsstack segment para stack 'stack'db 50 dup(?)stack endscode segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndand al,11011111bnd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start三、实验内容:1、分析程序实现功能;2、调试所给程序;记录运行结果3、将上述程序修改为:在屏幕上显示标题并提示你按键,每按一键在屏幕上显示二个相同的字符,将小写字母改成大写字母。
汇编语言上机操作

汇编语言上机操作汇编语言上机操作一、建立子文件夹如:D:\hb\masm二、复制相关文件把masm.exe、link.exe、ml.exe三个文件复制到上述文件夹中。
三、进入DOS方式开始/运行/cmd当前提示符可能是:C:\documents and settings\administrator>四、常用DOS操作命令1、改变当前盘输入d: 并回车,屏幕显示:D:\>2、改变当前目录1)进入下一级目录D:\>cd hb 回车后,屏幕显示:D:\hb>cd masm 回车后,屏幕显示:E:\hb\masm>问题:可以一次进入下面二级或多级目录吗?2)返回上一级目录D:\hb\masm>cd.. 回车后,屏幕显示:D:\hb\>cd.. 回车后,屏幕显示:D:\>问题:可以直接返回根目录吗?D:\hb\masm>cd\ 回车后,屏幕显示:D:\>3、显示当前目录内容D:\>dir /p 分页显示当前目录内容问题:如何显示d:\text中的内容?D:\>dir d:\text↙4、DOS方式下如何运行程序?DOS方式下的可执行文件(即程序文件)扩展名为.exe或.com,运行时只需要在系统提示符下输入文件主名即可。
例如,有一个文件名为test.exe,存入在D:\hb\masm 中,运行时,可以这样做:D:\hb\masm>test↙五、汇编语言上机过程1、编辑源程序运行:edit 回车后,进入EDIT环境,输入完后存盘(file/save)并退出(file/exit)。
2、汇编D:\hb\m asm>masm add5.asm↙生成目标程序文件add5.obj。
(如果有语法错误,会提示错误所在行号和错误类型)3、连接D:\hb\masm>link add5↙生成可执行文件add5.exe。
六、DEBUG程序调用及汇编语言程序调试方法调试程序DEBUG是DOS支持的又一种系统软件,主要用于汇编语言程序的调试。
实验二_汇编语言程序上机过程

实验二:汇编语言程序上机过程实验目的: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。
实验三 汇编语言程序上机过程

实验三汇编语言程序上机过程实验目的:1、掌握常用工具软件 PE,MASM和LINK的使用。
2、伪指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP。
3、利用的 1号功能实现键盘输入的方法。
4、了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法。
程序:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$' data endsstack segment para stack 'stack'db 50 dup(?)stack endscode segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndand al,11011111bnd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start实验步骤:1、用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。
2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。
若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。
3、用TYPE命令显示1产生的.LST文件。
4、用LINK将.OBJ文件连接成可执行的.EXE文件。
5、在DOS状态下运行LINK产生的。
微机汇编语言上机环境及步骤实验报告

汇编语言上机环境及步骤实验题目:汇编语言上机环境及基本步骤实验类别:微机原理实验日期:年月日实验地点:指导教师:姓名:学号:专业:电子信息工程班级:组别一、实验目的:1.掌握编写汇编源程序的基本格式。
2.熟悉汇编语言上机环境。
3.掌握汇编源程序的编辑和修改,熟悉EDIT或记事本的使用方法。
4.掌握汇编源程序编译、连接成可执行文件的过程,熟悉MASM,LINK的使用方法。
二、实验内容:在屏幕上显示并打印字符串“This is a sample program.”三、实验仪器微机一台四、实验步骤:1.在E盘以自己的名字的汉语拼音建立一个工作目录(文件夹,名称不要太长,不超过8个字符比如zhangsan),将文件MASM.EXE,LINK.EXE复制到该目录下,编辑的源文件也保存到该目录下。
从WINDOWS进入DOS环境:C:\> 2.用EDIT编辑SW1.ASM源文件。
(1). 从当前目录进入自己的目录下,C:\>E: 回车E:\> CD zhangsan ↙回车键入EDIT并回车:E:\ zhangsan>EDIT 根据菜单提示进行各种操作。
(2)进入EDIT编辑------EDIT是一种全屏幕编辑软件,可输入、编辑、修改、保存、另存源程序非常方便。
说明:也可在WIDNDOWS环境下用记事本编辑源文件,在保存时,保存类型应选择所有文件,不能选择文本文件(*.txt),否则在编译时会找不到源文件的。
(3).编辑新文件:a、在EDIT编辑器中输入汇编源程序。
b、检查输入有无错误。
c、打开文件菜单FILEà选择另存为SA VE AS┅à输入文件名为:SW1.ASMà保存。
注意:保存到你自己的文件夹中d、若需要修改此文件,用FILE菜单à选择打开OPENà输入文件名SW1.ASM,即可修改。
修改后注意重新再存盘。
(4).编辑汇编源程序a 、在EDIT(或记事本)中输入源程序。
第八讲(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 [起地址] [末地址] 不写地址执行刚刚汇编过的程序。
实验二-汇编语言程序的上机步骤

实验二汇编语言程序的上机步骤一、实验目的熟练掌握汇编语言程序的上机步骤和程序调试方法。
二、实验内容及步骤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 use16MESS1 DB ‘Press any key when you ready’,0AH,0DH,‘$’MESS2 DB ‘Input your password:’,’$’DSEG ENDSSSEG SEGMENT STACKDB 80H DUP(0)SSEG ENDSCSEG SEGMENTASSUME DS:DSEG,SS:SSEG,CS:CSEGSTART:MOV AX,DSEGMOV DS,AXMOV DX,OFFSET MESS1MOV AH,09HINT 21H ;显示“press any key when you ready.”MOV AH,08HINT 21H ;等待用户按任一键MOV DX,OFFSET MESS2MOV AH,09HINT 21H ;显示“Input your password:”MOV AH,4CHINT 21HCSEG ENDSEND START三、实验要求认真完成实验每一步骤,详细记录实验过程、现象和结果,及时整理实验报告。
汇编语言程序的上机过程

汇编语言程序的上机过程
1.建立源程序
用记事本写写代码,把扩展名改为.asm,存入masm文件夹中,保存类型改为“所有文件”,否则系统默认为.txt文件保存。
2.用MASM程序编译源文件,产生目标文件。
1)先进入C:\MASM>中
2)输入“masm MM”即masm 文件名(扩展名可以省略)
3)画蓝线的部分表示有0个警告和0个致命的错误,表示编译通过了。
3
目标文件查看:
3.用Link程序连接目标文件,产生可执行程序
输入“LINK 文件名.obj(扩展名可以省)”eg: LINK MM.OBJ
通过连接产生MM.exe文件,在命令符窗口输入dir命令查看。
4.直接输入文件名查看输出内容。
5.用debug程序调试与运行可执行文件
输入debug命令,屏幕显示:
-
“-”号表示debug系统提示符,
1)用u命令反汇编该文件,屏幕显示如下:
2)用d命令了解数据存储
格式为:
d 数据段地址:0
3)用g命令执行该程序
格式为
g=程序的首地址:0
表示程序正常终止,文件中的文件显示出来。
3)用r显示寄存器内容命令
这里的cs和IP显示了当前指向的指令及其代码,即即将执行的下一条语句。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言上机过程
一、用汇编语言编写的源程序,使之运行必须经过以下几个步骤:
1.用编辑程序建立一个扩展名为.ASM的汇编语言源程序文件。
2.调汇编程序(MASM),对源程序汇编,生成机器码目标文件,扩展名为.OBJ。
3.连接(LINK)目标文件,生成可执行文件,扩展名为.EXE。
4.运行可执行文件。
5.如果程序运行有错,可调用DEBUG 程序对.EXE文件进行调试。
二、编辑汇编语言源程序
可用各种编辑软件来建立汇编语言源程序,例如记事本。
先保存为.TXT文件,然后改为.ASM文件,方法是在windows界面:工具——文件夹选项——查看——将“隐藏已知文件的扩展名”选项去掉。
然后将扩展名.TXT直接改为.ASM,汇编程序文件名称由用户自定(只能用英文字母、数字下划线)。
三、编译汇编语言源裎序
用MASM程序汇编源程序,生成浮动目标程序(即扩展名为.OBJ的文件),这里产生的是浮动的目标模块,是不可执行程序。
汇编前,在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程序处理,以建立一个按字母顺序排列的能被显示或打印的源程序中的符号(包括变量)表。
利用它用户可以很快查到符号的相对地址及类型,这对调试较大的程序是很有用的。
所以用户的盘中还应拷贝CREF.EXE文件。
若用户不需要这些信息,可直接回车。
到此为止,汇编过程已完成。
MASM对源程序进行汇编时,若发现源程序中有语法错误则列出有错误的语句,错误的代码和错误的类型,最后列出错误的总数。
此时就可以分析错误,调用编辑程序修改错误,直到汇编无错误。
四、连接装配汇编程序
LINK.EXE文件用来将(.OBJ)文件连接成可执行文件,扩展名为(.EXE)。
连接过程如下:在DOS 下,键入
>LINK z1<CR>
先显示版本号,然后依此提问以下几个问题:
RUN FILE[Z1.EXE]:<CR>
LIST FILE[NUL.MAP]:<CR>
LIBRARIES[.LIB]:<CR>
第一个提示询问要产的可执行文件(.EXE)的文件名,一般按回车表示默认括号内规定的文件名。
第二个提示询问是否建立内存分配图文件(.MAP),直接回车表示不要建立。
最后询问是否用库文件(.LIB),若不用库文件,直接回车。
然后连接程序开始进行连接,若连接过程有错,则显示错误信息。
有错误就要修改源文件,重新汇编、连接直至无错。
若用户程序直接使用系统堆栈,则不要理会“NO STACK SEGMENT”的警告提示。
五、汇编语言程序的运行
汇编语言源程序经过汇编、连接以后生成的.EXE文件,可在DOS下直接键入文件名运行。
例如:
>z1 <CR>。
则z1.EXE文件会装入内存并从程序中起始的地址运行。
程序如正确无误,执行完后控制将能正常返回DOS操作系统。
若运行结果在存储单元里,或发现程序运行错误,或想跟踪程序的执行,那么就需要用DEBUG程序。
六、汇编程序的调试
DEBUG是专为汇编语言设计的一个调试程序,它通过单步、设置断点等方式为汇编语言程序的调试提供了非常有效的调试手段。
在DOS的提示下,键入命令:
>DEBUG z1.exe <CR>
DOS把 调入内存后把被调试的z1程序也调入内存。
装入内存的地址从偏移0开始,装入后显示DEBUG的提示符“—”。
在提示符“—”下可执行DEBUG的各种命令。
七、常用的DEBUG命令介绍如下。
1.显示内存单元内容的命令D
格式1:D<CR>
表示从代码段cs:0000H开始的80H个单元的内存。
格式2: D ds: [地址]<CR>
表示从数据段指定地址开始的80H个单元的内存。
格式3:D[始地址末地址]<CR>
此命令显示指定范围的内存。
例如下面是D命令显示内容的其中一行,显示说明:
0B2E:0200 E8 DA E1 46 E8 AC DF 74-0D E8 45 00 AC E8 41 00 ...F...t..E...A.
左边“0B2E:0200”是头一个存储单元的逻辑地址,对应内容就是“E8”,后面依次是后续存储单元的内容(十六进制形式),共16个数据。
中间的短划线“-”用于分隔第8和第9个数据,便于定位(位于16个数据中间)。
右边是对于存储单元内容的显示形式,就是说,如果它是一个可以显示的字符对应的ASCII码(例如第4个数据为46),则显示该字符(就是字符“F”),如果不是可以显示的字符,则显示为点“.”。
标志寄存器每个符号意义如下:
1.溢出OV(overflow,OF=1),无溢出NV(no overflow,OF=0)
2.减量DN(direction down,DF=1),增量UP(direction up,DF=0)
3.允许中断EI(enable interrupt,IF=1),禁止中断DI(disable interrupt,IF=0)
4.负数NG(negative,SF=1),正数PL(plus,SF=0)
5.零ZR(zero,ZF=1),非零NZ(no zero,ZF=0)
6.辅助进位AC(auxiliary carry,AF=1),无辅助进位NA(no auxiliary carry,AF=0)
7.偶校验PE(even parity,PF=1),奇校验PO(odd parity,PF=0)
8.进位CY(carry,CF=1),无进位NC(no carry,CF=0)
2.修改存储单元内容命令E
格式1:E[地址][内容]<CR>
用命令给定的内容去代替原来内存单元的内容。
如:
E DS:100 AA BB CC DD<CR>
是将0AAH、0BBH、0CCH及0DDH依次送DS:100H开始的4个单元中。
格式⒉E[地址]<CR>
意为一个单元一个单元地修改内存单元的内容。
如:
E CS:108<CR>
只显示出CS段内108H内存的内容,等待修改。
修改后按空格键显示下个单元的内容,利用空格键可以修改连续的单元内容,回车键结束该命令。
3.检查寄存器内容的命令R
格式l:R<CR>
显示CPU内部所有寄存器的内容和标志位状态。
格式2:R[寄存器名]
检查指定寄存器的内容。
如键入
R IP<CR>
IP 0356 :显示IP 的内容为0356
4.运行命令G
格式1:G<CR>
从当前CS:IP开始一直执行下去,直到INT 3指令为止。
格式2:G[地址]<CR>
执行到指定地址处停下。
5.跟踪命令(单步运行)T
格式1:T[=地址]<CR>
单条跟踪命令,即执行时逐条跟踪,从指定地址起执行一条指令后停下来,显示所有寄存器的内容及标志位的值,最后显示将要执行的指令。
如未指定地址则从当前的CS:IP开始执行。
格式2:T[=地址][N]<CR>
多条跟踪,从指定地址开始执行N条指令后停下来。
例如:
T=0003 3<CR>
表示从指定地址0003开始执行3条指令后停下来。
6.步进跟踪命令P
与T命令类似,该命令可执行一个循环、一个重复的字符串、一个软件中断或一程序调
用,即遇到CALL或INT等指令时,不会进入相应的子程序内逐条执行。
7.反汇编命令U
若在内存某区域中,已经有了某个程序的目标代码,为能了解此程序的内存,就可以用U命令进行反汇编。
格式l:U<CR>
从cs:0000H的反汇编32个字节机器码。
然后继续按U则显示下一个32个字节机器码。
依次类推。
格式2:U[起始地址]<CR>
从指定地址开始,反汇编32个字节。
然后继续按U则显示下一个32个字节机器码。
依次类推。
格式3:U[起始地址][结束地址]
对指定范围内的存储单元进行反汇编。
8.退出DEBUG,返回DOS
Q<CR>
DEBUG命令中,还有其他的命令,读者可参阅有关资料。