汇编语言入门基础(1)
文章目录
1.配置编译环境
1.1软件下载
1.1.1DOSBOX下载
进入官网选择对应版本进行下载。下载路径:DOSBox, an x86 emulator with DOS
1.1.2 DEBUG、TASM、TLINK下载
链接:https://pan.baidu.com/s/16Z8IeUGzgaJriKRItQ5oLw
提取码:F777
1.2 环境配置
将debug、tasm、tlink下载后移动到同一个文件夹,图方便的话也可即将该文件夹设置为程序存储文件夹。
然后将环境设置成如下形式:
打开dosbox,则会如下图所示。然后即可在命令行输入指令
1.3 生成exe文件
-
编写.asm文件,或者先编写.txt文件,再修改后缀名为.asm
-
在上面命令行输入如下指令,将.asm文件汇编为.obj文件
-
再次输入如下指令,将利用.obj文件连接生成.exe文件
2.源程序结构
[.586] ;选择指令集,选择针对哪种CPU进行执行
DATA SEGMENT ; 定义数据段
…… ;数据定义伪指令序列
DATA ENDS
STACK SEGMENT ; 定义堆栈段
…… ;数据定义伪指令序列
STACK ENDS
CODE SEGMENT ;定义代码段
ASSUME CS:CODE,SS:STACK,DS:DATA;段寄存器说明,代码段必不可少,图方便可以直接全都列写出来
START:
MOV AX,DATA ;取数据段基址
MOV DS,AX ;建立数据段的可寻址性
……
MOV AH,4CH ;返回DOS操作系统
INT 21H
CODE ENDS
END START ;当源程序为主模块,需要含启动标号START
3. 常用伪指令语句
3.1逻辑段定义伪指令
-
段定义语句:
从SEGMENT语句开始,到ENDS语句结束。
-
段寄存器说明语句:
ASSUME 段寄存器:段名
说明源程序中定义的段分别由哪个寄存器去寻址
-
设置段寄存器的初值
1.使用SEG运算符求出逻辑段的段基址 MOV AX,SEG DATA ;DATA数据段段名 MOV DS,AX 2.直接将段名赋给段寄存器 MOV AX,DATA MOV ES,AX
3.2 数据定义伪指令
1.常数定义伪指令
不分配内存
-
赋值伪指令EQU
使用EQU伪指令定义符号常数,其值在之后不能改变,即等同于c语言的const
-
等号伪指令——=
其符号名可以重新定义,定义语句可以放在任何逻辑段
2.变量定义伪指令
DB/DW/DD 数据项
- DB是从左至右每个字符分配一个字节单元
- DW为每两个字符分配一个字单元
- DD为每四个字符分配1个双字单元
$ 为 当 前 地 址 计 数 器 的 值 , 会 获 取 当 前 内 存 地 址 {\color{RED} \mathrm{为当前地址计数器的值,会获取当前内存地址} } 为当前地址计数器的值,会获取当前内存地址
3.3 过程与宏定义伪指令
1.过程定义伪指令
过程名 PROC [属性]
……
[RET]
……
RET
过程名 ENDP
在主程序通过CALL调用
2.宏定义伪指令
宏名 MACRO [形式参数表]
……
ENDM
宏体内的标号要用LOCAL伪指令说明为局部标号,以免多次调用,发生定义错误;宏展开时,LOCAL定义标号由??0000到??FFFF的符号名来替代。
主程序通过CALL调用
2.宏定义伪指令
宏名 MACRO [形式参数表]
……
ENDM
宏体内的标号要用LOCAL伪指令说明为局部标号,以免多次调用,发生定义错误;宏展开时,LOCAL定义标号由??0000到??FFFF的符号名来替代。