汇编语言(一):环境搭建以及 Hello World 的编写

作为汇编语言的课程笔记,方便之后的复习与查阅

本篇为课程第一次课内容

程序语言分类

  • 机器语言、汇编语言、高级语言

汇编语言的意义

  • 与硬件关系密切,有助于理解计算机硬件与操作系统
  • 有利于理解软件程序的工作原理
  • 执行效率高,占用空间小
  • 有些特殊领域只能用汇编

应用

  • 软件破解、程序保护
  • 逆向分析 (对目标软件进行反汇编、反编译或是动态调试跟踪,理解其核心代码)
  • 驱动程序开发

搭建环境

DOSBox 安装

  • 安装 DOSBox。DOSBox 可以在windows系统下构建一个虚拟的 DOS 环境
  • dasm 文件夹中包括了 debug、编译、链接时必要的可执行文件,因此可以把这个文件夹当成工作目录
  • 还有一个压缩包是 HexTools,用来以二进制形式查看文件内容
    在这里插入图片描述

挂载硬盘

  • 首先将本地的工作目录挂载到 DOSBOX 的 C 盘上
mount c e:\Workspace\assembly_language
  • 挂载之后在命令行中输入 c: 就切换到了你的工作目录 (我这里是 e:\Workspace\assembly_language)

  • 但每次打开 DOSBox 都要自己输入挂载命令的话毕竟还是太不方便,因此可以设置自动挂载。运行 DOSBox 安装根目录下的 DOSBox 0.74 Options.bat,它会自动打开配置文件,在配置文件最后的[autoexec]后输入挂载命令即可
[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
mount c E:\Workspace\assembly_language

命令行基本命令

  • cd: change directory
  • dir: 列出目录内文件
  • cls: 清屏
  • .exe, .bat, .com 文件可以直接执行

快捷键

  • Alt + Enter: 全屏
  • Ctrl + F4: 更新所有目录缓存 (即刷新目录页面)

Hello World!

汇编代码

.model tiny	; model存储模式伪指令
.code	; code段定义伪指令
.startup	; 程序开始伪指令
	mov		dx, offset str	; 指定字符串的偏移
	mov		ah, 9	; 
	int		21h		; 利用功能调用显示信息             
	.exit	0		; 程序结束伪指令
	str db  'Hello,World!',0dh,0ah,'$'	; 定义字符串 
end 	; 汇编结束

.model 伪指令

.model存储模式伪指令,该指令

  • 决定程序规模
  • 确定进行程序调用、指令转移、数据访问的缺省属性

主要包括:

  • tiny(微型模式), small, compact, medium, large, huge, flat
  • 我们主要使用tiny模式,生成.com文件

.code 简化段定义伪指令

  • .code用来创建一个代码段

.startup 程序开始伪指令

  • .startup用来指定程序开始执行的起始点

利用系统调用显示信息

  • DOS系统调用给我们提供了很多函数,比如在屏幕上显示字符串,创建文件,读写文件…这个函数库调用哪个函数就有ah寄存器指定
    • 这里使用的DOS系统调用9号功能就是将寄存器dh所存地址上的字符串显示到屏幕上

mov		dx, offset str	; 指定字符串的偏移
mov		ah, 9	; 
int		21h		; 利用功能调用显示信息    
  • 先用offset获取字符串变量str在内存中的地址,放入dx寄存器。然后将ah寄存器复位为9,表示启用DOS系统调用的9号功能,即在屏幕上显示字符串的功能。最后用int指令触发中断,进行DOS系统调用,在屏幕上显示信息

.exit 0 程序退出伪指令

  • 利用.exit 0来结束程序,退回 DOS 环境

定义字符串

  • 注意:定义的数据要放到 .exit 指令后
str db  'Hello,World!',0dh,0ah,'$'	; 定义字符串 
  • 0dh,0ah为回车换行,$为字符串结束标志
  • db为定义数据的伪指令,代表后面定义的数据都是以字节为单位。因此变量str中的数据即为字符串中每一个符号的ascii

end 汇编程序结束标志

  • end告诉汇编编译器,整个汇编语言程序到此结束

生成可执行文件

编译

masm hello.asm

链接生成可执行文件

link hello.obj/tiny

在这里插入图片描述

运行 .com

在这里插入图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值