汇编语言(Assembly language)实验环境搭建详解

汇编语言(Assembly language)实验环境搭建详解

汇编语言(assembly language)是特定于某个物理或虚拟计算机体系结构(与大多数高级语言相反)。汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。

【CPU 只负责计算,本身不具备智能。你输入一条指令(instruction),它就运行一次,然后停下来,等待下一条指令。这些指令都是二进制的,称为操作码(opcode),比如加法指令就是00000011。编译器的作用,就是将高级语言写好的程序,翻译成一条条操作码。

汇编语言是二进制指令的文本形式,与指令是一一对应的关系。比如前面提到的加法指令00000011写成汇编语言就是 ADD。只要还原成二进制,汇编语言就可以被 CPU 直接执行,所以它是最底层的低级语言。

最早的时候,编写程序就是手写二进制指令,然后通过各种开关输入计算机,比如要做加法了,就按一下加法开关。后来,发明了纸带打孔机,通过在纸带上打孔,将二进制指令自动输入计算机。把这些文字指令翻译成二进制,这个步骤就称为 assembling(汇编过程),完成这个步骤的程序就叫做 assembler(汇编程序)。

每一种 CPU 的机器指令都是不一样的,因此对应的汇编语言也不一样。目前最常见的 x86 汇编语言,即 Intel 公司的 CPU 使用的那一种。

基础知识可参见阮一峰的:

汇编语言入门教程

汇编语言入门教程 - 阮一峰的网络日志

本文重点介绍实验环境的搭建

有很多很好的汇编程序(assembler),如:MASM (Microsoft Macro Assembler)。

MASM是微软公司为x86 微处理器家族开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm,是Windows下开发汇编的利器。

在windows10中MASM环境的搭建:

在windows下搭建汇编语言(Assembly language)编程环境工具包,下载地址:

在windows下搭建汇编语言(Assemblylanguage)编程环境工具包.rar-其它文档类资源-CSDN下载

1)、创建一个用于保存汇编工具(debug.exe、link.exe、masm.exe、edit.com等工具)的目录,如:D:\ MASMdebug(根据你的情况确定)。

2)、安装DOSBox

DOSBox是一个 DOS 模拟程序。debug.exe、link.exe、masm.exe、edit.com等工具是DOS下的工具,要想正确运行就需要DOSBox这个 DOS 模拟程序。

双击安装:

直接一路Next完成安装。

安装完成,在开始菜单中创建文件夹:

在桌面上创建快捷方式:

3)、将1)中建立目录D:\ MASMdebug 挂在到DOSBox的C——输入MOUNT C D:\ MASMdebug回车(即按下Enter键),参见下图:

在DOSBOX中,输入C:回车(即按下Enter键)进入命令符C:\>,此时,可以运行D:\ MASMdebug中的可执行程序——debug.exe、link.exe、masm.exe等工具,参见下图:

进入debug程序,使用r指令查看cup寄存器内容,用q指令将退出debug程序。

运行DOSBOX,在命令符C:\>下,命令的拼写忽略大小写,此时:

【输入命令:EDIT 文件名.asm,启动EDIT.EXE进入代码编辑状态,输入程序代码。可以使用记事本代替EDIT程序。】

输入命令:MASM 文件名.asm,生成目标文件文件名.OBJ(生成过程中可以修改目标文件名,直接回车可保持默认目标文件名)

输入命令:LINK 文件名.OBJ,链接生成可执行文件文件名.EXE。

输入命令:DEBUG 文件名.EXE,在DEBUG的命令提示符“-”出现后开始调试。

编写运行汇编语言程序

有了前面准备工作,现在可以编写运行汇编语言程序了。

  1. 编写汇编语言程序

打开“记事本“输入如下代码:

assume cs:code,ds:datas 

datas segment 

str db 'helloWorld!','$'   

datas ends 

code segment 

    mov ax,datas 

    mov ds,ax 

    lea dx,str  ; 获取str的偏移地址 

    mov ah,9 ; 调用9号功能输出字符串 

    int 21h 

    mov ah,4ch 

    int 21h 

code ends 

end

保存文件名为test1.asm ,注意扩展名为.asm。为了编译方便放在目录D:\ MASMdebug中,参见下图:

  1. 输入MASM test1.asm , 生成.obj文件,参见下图:

上述过程的示意图如下:

若使用更为简洁的(注意带英文分号;)编译形式:

MASM test1.asm;

参见下图:

3)连接,输入LINK test1.obj ,参见下图:

上述过程的示意图如下:

若使用更为简洁的(注意带英文分号;)连接形式:

LINK test1.obj;

参见下图:

执行exe文件,参见下图:

特别提示,以后进入在DOSBOX中,开始时,需要挂载一下D:\ MASMdebug目录(根据你的情况确定)。

下面再给出一例汇编语言程序代码,你试着编译运行之:

DATA SEGMENT

BUFFER DB "1 STYLE ONE ", 0DH, 0AH

    DB "2 STYLE TWO ", 0DH, 0AH

    DB "3 EXIT ", 0DH, 0AH, '$'

DATA ENDS

CODE  SEGMENT

   ASSUME CS:CODE, DS:DATA

START:   MOV AX, DATA

   MOV DS, AX

  MOV DX, OFFSET BUFFER  ;打印菜单

  MOV AH, 09H

  INT 21H

   MOV AH,4CH      ;退出程序

   INT 21H

CODE  ENDS

END START

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值