汇编语言(ASM)编程

合集下载

MASM615汇编语言实验步骤

MASM615汇编语言实验步骤
5、输入源程序后保存,摁ALT+F键,就出现 选择“Exit”
退出编辑窗口
6、输入masm example1.asm回车
程序通过编译了。
7、输入link example1.obj回车,回车,回车,回车,回车
8、输入debug example1.exe回车
再输入U(查看反汇编命令,debug的调试命令,还有其他的)
MS-DOS Debug Commands
assemble
A
[address]
compare
C
range address
dump
D
[range]
enter
E
address [list]
fill
F
range list
go
G
[=address] [addresses]
hex
H
value1 value2
input
汇编语言实验步骤简单提示
1、点击桌面“ ”,选择“运行”,输入“CMD”后回车如:
2、 (假设masm615放在 )
3、输入:cd masm615 (回车)
4、 进入到编辑源程序的状态,跟TC界面是一样的。
实际上编辑Intel汇编语言源程序*.asm,可以用的记事本,不过记得把文件的后缀名改成asm,尤其不能留记事本的文件后缀名txt。
I
port
load
L
[address] [drive] [firstsector] [number]
move
M
range address
name
N
[pathname] [arglist]
output
O
byte

工业微型计算机的实验方法

工业微型计算机的实验方法

利用debug调试程序
首先装载被调试程序 使用命令查看寄存器或内存区域等程序 状态信息 修改内存区域的值; 运行程序:单步运行、断点运行等; 查看程序代码列表;
实验步骤
1. 2.
debug hello.exe装载hello.exe 利用命令:R 显示各寄存器的内容和下一 条要执行的指令。请查看各寄存器的当前值。
实验步骤
利用执行命令G可以设置断点执行被调 试程序。 -G=元中的字符串信息。
-D 0 L20
9. 10. 11.
R命令查看并指定的修改寄存器内容。 R设置标志寄存器的某个标记位。 A命令修改代码段中内存单元中的汇编 指令行。
一、建立工作环境
所使用的工具
实验一 汇编语言编程实验方法
——李振宁
一、实验的一般步骤
设计思想、 数据结构和算法
编辑(编辑器) 汇编语言源程序 文件*.asm 目标代码程序 文件*.obj 可执行程序 文件*.exe 调试(debug) 可执行程序 汇编 (masm.exe)
连接(link.exe)
准备工作
开始 运行 cmd 确定,进入dos平台。 在命令行下一次输入命令:
debug的退出
输入Q命令
quit
debug命令一览
A[地址] C[范围]地址 D[范围] E 地址 [字节值表] G [=起始地址] [断点地址表] H 数值 数值 I 端口地址 L [地址 [驱动器号 扇区号 扇区数]] M 范围 地址 N 文件标识符 O 端口 字节值 P [=地址] [数值] Q R [寄存器名] T[=地址][数值] U[范围] w[地址 [驱动器号 扇区号 扇区数]] S 范围 字节值表 汇编 内存区域比较 显示内存单元内容 修改内存单元内容 断点执行 十六进制加减 从端口输入 从磁盘读 内存区域传送 指定文件 向端口输出 执行过程 退出debug 显示和修改寄存器内容 跟踪执行 反汇编 向磁盘写 在内存区域搜索

汇编语言

汇编语言

汇编语言汇编语言实质上是机器语言的符号表示,即用助记符(指令功能的英文缩写)代替了机器语言指令的二进制代码。

用汇编语言按着规定的语法规则编写的程序称为汇编语言源程序(*.asm)。

汇编语言源程序中的汇编指令与指令的机器码(目标代码)是一一对应的。

汇编语言2高级语言是面向过程的语言,它不依赖于特定的机器,独立于机器,高级语言编写的程序由一系列编程语句和相应的语法规则构成,编程方法更适合于人们的思维习惯,易于理解和阅读,程序本身具有可移植性,通用性强高级语言的缺点是编译程序和解释程序复杂,占用内存空间大,与汇编语言程序相比,经编译后产生的目标程序长,执行速度慢高级语言3汇编语言上机处理过程4汇编语言汇编语言的程序格式伪指令程序设计基本方法5汇编语言的程序格式汇编语言程序的结构汇编语言语句类型及格式汇编语言的数据与表达式6源程序的一般格式STACK SEGMENT┇STACK ENDSDATA SEGMENT┇DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:…┇CODE ENDSEND START7例题一个两字相加的程序。

DATA SEGMENT ;定义数据段DATA1 DW 1234H ;定义被加数DATA2 DW 5678H ;定义加数DATA ENDS ;数据段结束ESEG SEGMENT ;定义附加段SUM DW 2 DUP(?);定义存放结果区ESEG ENDS ;附加段结束CODE SEGMENT ;定义代码段;下面的语句说明程序中定义的各段分别用哪个段寄存器寻址ASSUME CS:CODE, DS:DATA,ES:ESEGSTART:MOV AX,DSEG ;START为程序开始执行的启动标号MOV DS,AX ;初始化DSMOV AX,ESEGMOV ES,AX ;初始化ESLEA SI,SUM ;存放结果的偏移地址送SIMOV AX,DATA1 ;取被加数ADD AX,DATA2 ;两数相加MOV ES:[SI],AX ;和送附加段的SUM单元中HLTCODE ENDS ;代码段结束END START ;源程序结束8源程序的结构特点汇编语言程序通常由若干段组成,段由伪指令SEGMENT与ENDS定义,各段顺序任意,段的数目按需要确定,原则上不受限制。

汇编语言ASM编程

汇编语言ASM编程

汇编语言ASM编程汇编语言(Assembly Language)是一种低级语言,用于编写与特定计算机硬件体系结构直接交互的程序。

它是机器语言的助记符表示法,通过将每个机器指令与相应的助记符关联,使程序开发者能够更加方便地编写和理解程序。

在汇编语言中,每个指令都对应着计算机的一条机器指令。

汇编语言的特点是直观、灵活和高效。

它直接操作计算机的寄存器和内存,可以精确地控制硬件资源,对于一些对性能要求较高的操作,如图形处理、物理模拟等任务,使用汇编语言可以有效提升程序的执行效率。

汇编语言的学习对于程序开发者来说是很有价值的。

它不仅可以帮助理解计算机硬件的工作原理,还可以为高级语言的学习提供基础。

在某些特定的场景下,仍然有必要使用汇编语言开发程序,例如编写嵌入式系统、驱动程序和性能优化等。

因此,掌握汇编语言编程技巧是程序开发者的一项重要能力。

在ASM编程中,我们会使用汇编语言的指令集来编写程序。

汇编语言的指令集因计算机硬件的不同而有所差异,常见的指令集有x86、ARM、MIPS等。

例如,在x86架构的计算机上进行ASM编程,我们会使用 x86 指令集的语法格式进行编程。

在开始ASM编程之前,我们需要安装一些开发工具和编译器。

常用的工具有汇编器(assembler)和链接器(linker),它们可以将汇编语言代码转换为可执行的机器代码。

一般来说,我们还需要一个调试器(debugger)来帮助我们调试程序。

以下是一个简单的ASM编程示例,展示了如何将两个数相加并将结果存储在寄存器中:```asmsection .datanum1 db 10num2 db 20result db 0section .textglobal _start_start:mov al, num1add al, num2mov result, al; 将结果显示在屏幕上mov ah, 0x0emov al, resultadd al, '0'int 0x10; 程序退出mov ah, 0x4cint 0x21```在上面的示例中,`.data` 段用于声明数据区域。

第七章 Win32汇编语言-IA-32ASM高级编程

第七章 Win32汇编语言-IA-32ASM高级编程

计算机学院信息安全系
mov ecx,100 xor eax,eax lea ebx, array .repeat .if sword ptr [ebx] >= 0 add eax,[ebx] .else .break .endif inc ebx inc ebx .untilcxz mov result, eax
2012-6-10
; sum3.asm .386 .model flat, stdcall
.code sum3 proc v1, v2, v3 mov eax, v1 add eax, v2 add eax, v3 ret sum3 endp end ;不上述文件相似
10
;调用库测试: ;Test33_2.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib
计算机学院信息安全系
求1~100乊和 ;WHILE结构 xor eax, eax mov ecx,100 .while ecx!=0 add eax,ecx dec ecx .endw mov sum,eax ;UNTIL结构 xor eax, eax mov ecx,100 .repeat add eax,ecx dec ecx .until ecx==0 mov sum,eax
2012-6-10
21
宏的定义
MACRO和ENDM是成对出现的关键字,分别表示宏定义的 开始和结束;

汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法

汇编语言得编程步骤与调试方法一、汇编源程序得建立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文件,观察程序运行结果,如果存在错误,需要进行调试。

汇编语言

汇编语言

注: NAME 、TITLE 操作不是必须的。 END 则必不可少。
汇编语言程序格式
源程序的每条语句可表示为:
[名字]
标号 变量
操作项
指令 伪指令 宏指令
操作数
寄存器 标号 变量 常数 表达式
[; 注释]
说明程序或语句 的功能
标号/变量:段值、偏移量、类型三种属性 表达式:数字表达式 地址表达式
一、名字项
(2) 逻辑和移位操作符: AND、OR、XOR、NOT
SHL、SHR
(3) 关系操作符: EQ、NE、LT、LE、GT、GE (4) 数值回送操作符: OFFSET、SEG、TYPE、
LENGTH、SIZE
(5) 属性操作符: PTR、段操作符、SHORT、
THIS、HIGH、LOW、 HIGHWORD、LOWWORD
• 产生目标文件(.obj)和列表文件(.lst)。 • 展开宏指令。
汇编语言程序的开发过程
文本编辑器,如
编 辑
错误
源程序:文件名.asm 汇编程序,如 MASM.EXE
汇 编
目标模块:文件名.obj 连接程序,如 LINK.EXE
错误
连 接
可执行文件:文件名.exe
错误
调试程序,如 DEBUG.EXE
程序运行时将多条语句展开。
●宏调用指令与子程序调用有些相似,但实
际上有许多不同。
2ቤተ መጻሕፍቲ ባይዱ宏的定义和使用
宏指令的使用要经过以下三个步骤:
my_code ends end begin
●由上例可看出,汇编语言源程序除了实现具
体功能的指令外,还有一些涉及数据定义、
程序格式的伪指令,是汇编语言源程序的必

用MASM汇编语言输出“Hello World!”

用MASM汇编语言输出“Hello World!”

用MASM汇编语言输出“Hello World!”不管是汇编语言、B、C/C++还是Java,学习编程的第一个程序都是输出“Hello World!”笔者不知道为什么不说其他的话,反正写书的人都是这样写的,也许是认为这些语言就像初生的婴儿一样,睁开眼睛的第一眼看到这个世界,内心充满了好奇和膜拜。

学习汇编预言的过程很熬心,笔者也很头疼,刚学习半个学期,也就了解了一点基础知识,有的程序也根本看不懂,目前也就在实验指导和课本上学会了第一个输出“Hello World!”的程序,这里就将笔者所能够搞懂的一些步骤来做个总结。

(一)准备工作(此处强调:此文所用软件masm是在win7 32位系统环境下,64位系统不兼容,需安装虚拟机后才可运行)首先下载masm5.0环境软件,下载地址:/detail/14/132320.shtml下载完成后解压到硬盘根目录,笔者解压到了E盘根目录,改名为masm打开文件夹之后会有10个文件(二)正式开始1、进入DOS,“开始->运行->cmd->回车”,或者使用快捷键“windows+R”即“+R”调出运行对话框,键入“cmd”后回车2、成功打开DOS环境,如图3、然后直接在DOS中键入“E:”后回车,进入E盘根目录,再键入“cd masm”进入masm文件夹,如图4、然后键入“edit”后回车进入编辑窗口,如图注:这是汇编编辑的基础窗口,可以再编辑玩程序后通过“File->Save as”将文件保存到masm文件夹,但笔者不建议用这种方法,最快捷的方式笔者觉得还是在masm文件夹内新建一个文本文档,更名为“XXXX.asm”(注意一定要将后缀改为.asm,笔者所用文件名为414.asm),打卡方式更改为使用记事本打开,然后打开文件将代码写进去,保存退出,回到DOS。

5、键入“masm 414.asm”回车编译414.asm文件生成414.obj文件,如图6、再别输入其他任何字符,直接回车3次,如果有错会出现提示,按照提示内容修改源文件后再运行一遍“masm.414.asm”,如果无错即顺利生成XXXX.obj文件,如图7、然后键入“link 414.obj”回车,顺利生成exe可执行文件,如图8、键入“414.exe”回车3次进行exe文件检查,会提示“no stack segment”,不妨碍文件执行,继续,如图9、继续键入“414.exe”,回车,如图,屏幕显示“Hello World!”,大功告成!(三)总结切记,文件的运行不管是编译还是链接还是到最后的执行,都是在“E:\masm>”下,如果没有这个起始,那就是没有进入masm文件夹,那样是没有办法进行编译等工作的,所以前提是一定要在进入DOS环境下之后进入masm 文件夹下,在保证汇编软件完整的前提下进行编译工作,否则一切都是徒劳。

汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法一、汇编源程序的建立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 文件。

(4)执行程序执行*.exe文件,观察程序运行结果,如果存在错误,需要进行调试。

汇编语言上机指导及例示(川大微机原理实验资料和内容以及MASM使用方法)

汇编语言上机指导及例示(川大微机原理实验资料和内容以及MASM使用方法)

汇编语言上机指导及例示、习题从如何建立源文件到进行调试作下简要的介绍,并配例题说明。

由于本人水平有限,在下文在如有错误及可以进一步修改的地方请大家指出汇编语言上机过程:一、上机前的软件准备:MS-DOS操作系统(如:MSDOS6.22 , MSDOS7.0 等)文本编辑器(如: , TURBO.EXE , TC.EXE , C.EXE 等)汇编程序(如:MASM.EXE , ASM.EXE 等)连接程序(如:LINK.EXE 等)调试程序(如:DEBUG.EXE 等)二、汇编程序建立过程:a.建立汇编源程序─通过───→b.编译为目标文件─↓┬─→d.连接为可执行文件↑│ c.不通过,重新修改(语句错误)↓├──────────────────────┘↓↑ f.不正确,用调试工具调试,重新修改(逻辑错误)↓└────────────────────────────←e运行↓正确g.完成三、现在对(二)的每一个标有字母的过程(PROCEDURE)进行详细说明PROCEDURE a:建立汇编源程序(即:建立文件名.asm)这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。

将源程序代码录入计算机的方法很多,下面将介绍具体方法。

1.通过MD-DOS自带的EDIT.EXE文本编辑器进行输入,在DOS提示符下键入:EDIT回车,这时如果你系统内可调用时,EDIT的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename为你起的文件名,由1-8个字符组成),asm 是为汇编程序识别而必须加上去的,不可更改。

存盘后在DOS下可用DOS命令DIR来查看,如果看到了所存的文件存在,就可以进行进程b。

2.如果你的系统中没有EDIT,也可用你所熟悉的文本编辑器进行录入、编辑,如可用c语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。

汇编语言程序格式及MASM

汇编语言程序格式及MASM
◆映像文件也是一种文本文件,含有每段在存储器中的分配情况。如下命令创建:
ML /Fm LI6-1.ASM
将产生LI6-1.MAP映像文件,如下:
LI6-1.MAP
Start Stop Length Name Class
00000H 00022H 00023H _TEXT CODE
汇编语言程序格式及MASM
汇编语言的实现也是先利用某种编辑器编写汇编语言源程序(*.ASM),然后经过汇编得到目标模块文件(*.OBJ)、连接后形成可执行文件(*.EXE)。
1、汇编语言程序的语句格式
汇编语源程序由语句序列构成。语句一般由分隔符分成的四个部分组成,它们有两种格式:
(1)执行性语句——由硬指令构成的语句,它通常对应一条机器指令,出现在程序的代码段中:
0007 2B DA * sub bx, dx
0009 D1 E3 * shl bx, 001h
000B D1 E3 * shl bx, 001h
000D D1 E3 * shl bx, 001h
000F D1 E3 * shl bx, 001h
0011 FA * cli
0012 8E D2 * mov ss, dx
标号:硬指令助记符 操作数,操作数 ;注释
(2)说明性语句——由伪指令构成的语句,它通常指示汇编程序如何汇编源程序:
名字 伪指令助记符 参数,参数,... ;注释
◆执行性语句中,冒号前的标号反映该指令的逻辑地址;说明性语句中的名字可以是变量名、段名、子程序名或宏名等等,既反映逻辑地址又具有自身的各种属性。标号和名字很容易通过是否具有冒号来区分。
li6-1.lst
Microsoft (R) Macro Assembler Version 6.11 08/10/05 14:09:13

ASM-51 宏汇编使用手册

ASM-51 宏汇编使用手册

ASM-51 宏汇编使用手册强烈推荐使用配套光盘中的MedWin或Keil开发环境进行编程!其中的A51与这里的ASM51基本相同ASM-51 宏汇编主要用来开发Inter8051系列单片机,它具有宏处理,数据处理,列表处理和条件处理等多种功能。

源程序的编写完全采用 Inter标准助记符和行格式。

在编写程序过程中,可借助于文本编辑(Windows的记事本)或文字处理软件Word等编辑,经ASM-51汇编后生成列表输出文件(.LST)和目标代码文件(.HEX)。

此目标代码文件(.HEX)可直接用CZS-51或MedWin、Keil、Debug8051进行模拟/调试,或直接用于硬件仿真器上运行。

当然,这也是要烧写到单片机ROM中的代码。

1、宏汇编语言的基本语法1、1 宏汇编的特点ASM-51宏汇编完全支持Inter助记符的汇编语言,它含有宏语句,英文大小写字母,变量名,标号等不受限制,有二,十,十六进制和串参数类型,有汇编控制指令和多层条件语句,程序逻辑分段,还有模块化程序设计的连接功能,汇编速度快等特点。

1、2 汇编处理过程(1) 用行编辑EDLIN或文字处理软件WS或全屏幕编辑软件PE等,编辑宏汇编语言源程序,它的文件扩展名为。

ASM。

(2) 用ASM-51宏汇编程序对上述源程序文件进行汇编,产生扩展名为.LST的列表输出文件和扩展名为.HEX的目标代码文件(.HEX)。

列表输出文件包含源程序语句所汇编成的代码,以及有关的地址,语句和符号表等。

目标代码文件包含源程序语句所汇编成的代码,不包含任何符号信息或助记符。

进行模拟/调试,或直接用于硬件仿真器上运行。

1、3 语句汇编语言可分为两类语句:指令性语句和指示性语句。

(1)指令性语句这一类语句是指在汇编过程中能生成指令代码的语句(如 MOV ,DEC等)。

其格式为:[标号:] [指令助记符] [操作数] [;注释]其中方括号[ ]中为选择项。

下同。

汇编语言源程序的运行过程

汇编语言源程序的运行过程

..汇编语言源程序的运行过程一、概述二、具体操作过程1.编辑过程在计算机“附件”的“记事本”中,用word 编辑汇编语言源程序,比用编辑程序EDLIN 要方便得多。

因为使用后者,必须熟记它的各种命令及其功能。

使用前者的操作步骤如下:第一步:编辑并建立扩展名为ams 的文件开始→程序→附件→记事本→键入汇编语言源程序(也可用Ctrl+C 及Ctrl+V 拷贝已有程序)→文件→另存为→出现“另存为”窗口→在‘文件名:’处为该文件命名,并切记:将扩展名由.txt 改为.asm →在“另存为”窗口里的“我的电脑”中找到含有MASM.EXE 、LINK.EXE 以及DEBUG.EXE 这三个工具的文件夹(如,8086experi ),并双击之→该文件夹名便出现在“保存在:”处→保存(至此,该文件夹中将出现你所编辑的扩展名为asm 的汇编语言源程序。

此时的源程序以ASCII 码形式存盘,而非机器码)→关闭记事本。

注意:上述三个工具及用户程序必须在同一文件夹中。

此后,为显示,打印或修改该程序,双击该程序的图标即可。

第二步:在DOS 下运行EDLIN ,以便查找并排除源程序中可能存在的语法错误。

window 状态→开始→运行→打开:cmd ↙→确定→出现DOS 提示符:C:\……>→指定存有你的程序的文件夹所在盘(如D 盘)为当前盘 D: ↙→D:\>cd 文件夹名↙→在DOS 管理下键入源程序编辑程序 无语法错误的汇编语言调试过程D:\文件夹名>edlin 文件名.asm ↙End of input file* E ↙按结束编辑命令E 之前,生成了一个扩展名为$$$的文件;结束编辑状态之后,该文件的扩展名由$$$变为BAK 。

特别指出:即使不用EDLIN 进行编辑,也必须进行此步。

否则,若源程序中存在语法错误,下一步进行汇编后,不予提示,也不生成机器码文件,无法进行再下一步的连接,致使程序无法运行。

第4章 汇编语言程序格式

第4章 汇编语言程序格式

WORD——从字边界(偶数地址)开始
DWORD——从双字边界(4的倍数地址)开始 PAGE——从低8位物理地址为0处开始
(2) 组合类型(combine_type)说明程序连接时的段合并方法,可以是:
PRIVATE——私有段,不与其它模块中的同名段合并——默认值 PUBLIC——公有段,连接时与其它模快中的同名段合并成一个段
4.2.1 处理机选择伪操作
.8086 . 286 . 286P . 386 . 386P 选择8086指令系统 选择80286指令系统 选择保护模式下的80286指令系统 选择80386指令系统 选择保护模式下的80386指令系统
. 486
. 486P . 586
选择80486指令系统
选择保护模式下的80486指令系统 选择Pentium指令系统
CS:CSEG,DS:DATAGROUP
START:MOV MOV ……
AX,DATAGROUP DS,AX
4.3.3 程序开始和结束伪操作
1. 开始伪操作
在程序的开始可以用NAME或TITLE作为模块的名字,NAME的格式是: NAME 模块名
如果程序中没有使用NAME伪操作,则也可使用TITLE,其格式为: TITLE text
例4.2 .MODEL SMALL .STACK 100h .DATA 例4.3 .MODEL SMALL .STACK 100h .CONST …… .DATA …… AX,@DATA DS,AX .CODE START: MOV AX,DGROUP
……
.CODE START: MOV MOV …… MOV INT END AX,4C00H 21H START
③ uninitialized data

汇编语言编程实验报告

汇编语言编程实验报告

汇编语言编程实验报告汇编语言程序设计实验报告(一)汇编语言程序设计实验报告(一)一、预备知识汇编语言程序设计是一门实践性很强的课程。

编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。

二、实验目的1、掌握实验运行汇编语言所用的计算机机型2、熟悉常用编辑程序(行编辑程序EDLIN、全屏幕编辑程序QE及其它用于文件编辑的应用程序。

)3、掌握汇编程序ASM、宏汇编程序MASM1.0以上。

4、LINK连接程序5、DEBUG调试程序三、汇编语言源程序上机操作过程2、编辑源文件根据给定的任务,可编写程序。

如果经过检查认为所编程序无错时,就可在计算机上通过编辑程序建立源程序文件了。

一般在编辑过程中总会有错误产生,因此还要进行人工检查、修改以致重新编辑,直到所编辑的源程序无误为止,然后以一个源程序文件(ASM文件)存盘。

将包含QE文件的工作磁盘插入驱动器A:。

进入QEA\QE进入全屏幕后可以开始编程。

文件名取为Myprog。

asm;Ddisplystring (09H)CODESEGMENTPUBLICASSUME CS:CODE,DS:CODEORG 100HSTART:JMP BEGINMSG DB‘Hi ! This ia a dollar sign terminated string.’,’$’BEGIN:MOV AX,CS ;set up to display messageMOV DS,AXMOV DX,OFFSET,SG ;set up to display messageMOV AH,09H;display string function requestINT 21H ;call DOSMOV AH ,4CH ;terminate propram funct requestINT 21H ;Call DOSCODE ENDS;end of code segmentEND START;strat is the entry point输入完毕后,按ALT---X,存盘返回DOS3、汇编源程序文件(ASM,MASM)由编辑程序所建立的ASM文件只是个文本文件,计算机无法执行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

附加工作3-设置中断向量表
• 固定中断向量表
Vvector
.section .org .lword
.equ 0FFFDCH
inter,romdata Vvector+(8*4) reset
;复位中断向量
附加工作4- RAM区清零
• RAmov.w sstr.w
附加工作3-设置中断向量表
• 可变中断向量表
Vintbase LDINTB .equ 0FA000H #USER_vector_table ;设置寄存器 INTB .section val_vect,romdata .org Vintbase ; 指定中断向量 表起始位置 USER_vector_table: .lword dummy ; No0 Break Interrupt .lword dummy ; No1 Break Interrupt
汇编程序的一般结构
• C程序结构的一个简单例子
#include “stdio.h” void main() { int a, b, i; a=3; b=0; for (i=0; i<5; i++) b + = a; …… }
汇编程序的一般结构
• 汇编程序结构(1) - Section
.include sfr62s.inc
• 在实际设计中,这些值根据所选的MCU片 子来定
附加工作2 - 基址寻址设置
• 基址寻址方式
SB_base .section result: .equ 380H ;基址 memory, data .blkb 1
.section prog,code .org VprogTOP .sb SB_base ;寄存器地址声明 .sbsym result ;变量声明其寻址方式 ldc #SB_base, SB ;对基址寄存器赋值 ……
《单片机与嵌入式系统》
汇编语言(ASM)编程
清华大学电子工程系 2004年3月
内容提要
• 汇编程序的一般结构 – 与C程序比较 • 开发工具的安装和使用 – TM, PD30SIM, KD30
• 本次实验
参考文档
– Document • 6020e_ASM program 汇编编程手册 • 6020e_software manual 指令手册 • 各开发软件的Help中的Manual – 教材第三章 指令系统
.section memory, data ;数据段 result: .blkb 1 temp: .blkb 1 .section prog, code ;代码段 reset: mov.b MyAge, temp mov.b temp, result ……
汇编程序的一般结构
• 汇编程序结构(2)
…… .section
.equ .equ
400H 2BFFH
#0, r0 #(VramEND+1-VramTOP)/2, r3 #VramTOP, a1
r0 为内容; r3 为次数;a1 为首地址。
附加工作5- 设置其他寄存器
• 如果使用了 I/O 需设置
mov.b #0, pd8 mov.b #1, pur2 ;方向寄存器 ; 上拉电阻寄存器
附加工作2 -堆栈设置
两种堆栈:堆栈指针ISP和USP
用何种堆栈,由堆栈指针选择标志位(U标志)选取。 U = 0 选取中断堆栈指针 ISP U = 1 选取用户堆栈指针 USP SP指针位置如何设定: 栈顶指针 Push : SP = SP – 1 Pop : SP = SP + 1 相关设定代码: VIstack .equ 2C00H ldc #VIstack, ISP ;赋值
• 更多 时钟,A/D等外围电路的设置
一个求 8 位 BCD 码相减的例程
;---------- INCLUDE OF SFR FILE ---------------.list off ; 程序不列表 .include sfr62s.inc ; sfr 包含文件 .list on ; 程序列表 ;---------- DEFINE OF SYMBOLS -----------------VramTOP .equ 000400H ; 内部 RAM起始地址 VramEND .equ 002BFFH ; 内部 RAM终了地址 VIstack .equ 002C00H ; 堆栈指针 VprogTOP .equ 0F0000H ; 程序区起始地址 Vintbase .equ 0FA000H ; 可变矢量表起始地址 Vvector .equ 0FFFDCH ; 固定矢量表起始地址 SB_base .equ 000380H ; SB 基址 ;
cons_var, romdata ; ROM 数据区 MyAge: .BYTE 26 inter, romdata Vvector+ (8*4) reset
.section .org .lword .end
M30624FGFP
Memory Map
汇编程序需要多做一些工作
1. 需要定义每个Section的起始地址;
;---------- KEEP OF RAM AREA ------------------; .section memory,data .org VramTOP result: .blkb 2 ; 运算结果数据 ; .section prog,code .org VprogTOP .sb SB_base ; 分配SB寄存器 .sbsym result ; 设置寻址方式
2. 需要指定基址寻址方式的首地址和堆栈 的首地址; 3. 需要设置中断向量表;
4. 需要在使用RAM区之前清零;
5. 其他设置:根据使用的外设,设定相关 的寄存器和I/O控制寄存器。
附加工作1 - Section起始地址
• 需要定义每个Section的起始地址
VramTOP .equ 000400H VprogTOP .equ 0F0000H Vintbase .equ 0FA000H Vvector .equ 0FFFDCH .section memory, data .org VramTOP ……
相关文档
最新文档