当前位置:网站首页>汇编语言入门基础(1)
汇编语言入门基础(1)
2022-07-27 16:22:00 【Miracle Fan】
汇编语言入门基础(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的符号名来替代。
边栏推荐
- Examples of map search
- JDBC MySQL 01 JDBC operation MySQL (add, delete, modify and query)
- Arrays and objects in JS
- Jianmu continuous integration platform v2.5.2 release
- Ruiji takeout SQL table
- PyGame aircraft war game background implementation
- Zhaoqi scientific and technological innovation introduces high-level talents at home and abroad and connects innovation and entrepreneurship projects
- 飞机大战敌机出场
- RuntimeError: output with shape [1, 256, 256] doesn‘t match the broadcast shape [3, 256, 256]【报错】
- WPS turns off annoying advertisements
猜你喜欢

Uni app traversal array rendering data vertical rendering

Jianmu continuous integration platform v2.5.2 release

Join query and subquery

Typescript installation
![[NPM] the](/img/ae/efccefae0323a1f6a425523e01d2ac.png)
[NPM] the "NPM" item cannot be recognized as the name of cmdlets, functions, script files or runnable programs. Please check the spelling of the name. If the path is included, make sure the path is co
![[wechat applet] project practice - lottery application](/img/08/1e8643c95ad7c2661a76f9c3a0c57d.png)
[wechat applet] project practice - lottery application

Uni app label jump

JDBC-MySql 01 JDBC操作MySql(增删改查)

Leetcode first day of question brushing

连接查询和子查询
随机推荐
was not registered for synchronization because synchronization is not active[已解决]
文件的上传和下载
LeetCode 刷题 第一天
内网的公司邮箱服务器怎么发外部邮件
PyGame aircraft war game background implementation
音乐律动七彩渐变灯芯片--DLT8S04A-杰力科创
Redis annotation
Typescript installation
Interviewer: what do you think is your biggest weakness?
MySQL 02 初体验
正则表达式的扩展
V-bind and V-for
Ruiji takeout SQL table
Product recommendation and classified product recommendation
express get/post/delete...请求
Order submission
js实现简易表单验证与全选功能
npm的身份证和依赖
商品推荐和分类商品推荐
Uni app form submit button send request