多语言展示
当前在线:129今日阅读:2今日分享:38

如何编写最简单的汇编语言---顺序结构汇编语言

学习汇编语言已经有一段时间,回想起当初想学汇编语言却无从入门,心里就不舒服,今天写一个最简单的汇编程序,希望能帮助初学者入门提供一点经验。
工具/原料
1

masm.exe宏汇编工具

2

link.exe连接程序

3

debug.exe调试程序

4

edit.exe编辑工具(类似记事本),可用记事本代替

方法/步骤
1

首先明白编译环境:以上4个exe程序必须在32机中运行,若是64位机,请参照dosbox0.74(如何在64位机中使用debug)使用方法。dosbox0.74具体实现方法:(这个方法目前不怎么完善)

2

了解计算机CPU原理:详情请参照“80X86计算机组织”和“80X86的指令系统和寻址方式”

3

首先有一道题:求表达式Y=A*X+B-C的值,已知A、B、C分别存放在DA-1、DA-2、DA-3字节单元,它们的值分别是:5 、 6、 7,X存放在INPUT字节单元,结果Y放入JSJ_10字节单元。分析顺序结构程序代码:由记事本敲出来的data segment    da_1  db  5    da_2  db  6    da_3  db  7    input  db  1    jsj_10 db  0data  ends                                      ;这一段在内存中定义了一个段,叫做data,并且其中存入了5个变量并且付入初值,db代表每个变量占用1个字节,若是dd则为字,为2个字节code  segment                              ;名字叫做code的段的定义,显然这儿作为代码段,当然code这个名字可以更改     assume  cs:code,ds:data              ;指定data为DS数据段,code为CS代码段start:       mov ax,data                              ;加法指令       mov ds,ax                                  ;加法指令       mov al,da_1                               ;加法指令             mov bl,input                             ;加法指令       mul bl                                        ;乘法       add al,da_2       sub al,da_3                                 ;减法       mov jsj_10,alexit:  mov ah,4ch         int 21h                                     ;这两行相当于ret(返回值),就像C语言中的return 0;code ends       end start注释: XXXX  segment                      .............                 XXXX ends                     ;定义一个段        assume  ds:XXXX   把XXXX段指定为ds(ds是段地址寄存器)

5

打开cmd,并设置目录进入刚才的文件夹。

6

现在教如何使用edit编辑我们的asm文件

7

现在使用masm命令,借助masm.exe宏汇编程序将我们的asm文件翻译成obj二进制代码文件,若是过程中遇到错误,请用edit命令修改asm文件。

8

以上步骤之后,在文件夹中已经多出了生成的obj文件。此时需要将obj文件连接并生成exe可执行程序

9

于此,目录中又多出了exe文件。

10

在接下来这几步中,我们需要使用各种汇编指令进行程序调试。

11

接下来出现了,一个“-”,键入R查看数据,点击U反汇编,可以查看到将要执行的步骤

12

接下来便是执行程序,首先设置数据段。通过键入两次T(逐行执行命令)将data segment 设置为数据段。

13

这里,我们将各个步骤分别讲解

14

程序调试完毕,在来观察数据段中的值的情况。

注意事项
1

务必了解80X86计算机组织

2

务必了解80X86的指令系统和寻址方式

推荐信息