一、汇编语言环境安装与配置

1. 这里主要是在8086CPU的环境下学习的汇编语言,所以需要模拟这样的环境。

**2. 下载 dosbox 和 masm ,dosbox 是一个dos模拟程序,我们现在用的操作系统和CPU大多数64位的,8086CPU和16位操作系统已经成为古董了,那么 dosbox 可以模拟这样的环境。masm 是汇编语言的编译和 link 的工具,且必须在 dosbox 环境下使用(如果有支持window32位或者64位下直接使用的编译工具,相应的汇编语言也是不同于8086CPU的汇编指令,这样的工具应该也是有的,有需要可以自行了解一下)。 **
下载地址(如果地址不对可以自己去相应的官网下载,或者给我留言,我发给你):
dosbox :
http://www.dosbox.com/download.php?main=1
http://sourceforge.net/projects/dosbox/files/

masm 5.0 :
http://www.x86asm.com/download/tool/masm/masm500.zip

**3. 安装dosbox,这个安装过程没什么要注意的,直接安装默认位置就好,文件很小,一路next。 **

4. 将masm加压到D:\masm\masm文件夹下,另外在D:\masm创建一个code文件夹用来存放asm源代码文件,以后写代码就在D:\masm\code下新建asm文件,然后将代码写到里面。(最好是先按照这样的路径,待熟悉了再琢磨路径的问题,这里不说这些东西,只是实现快速搭建环境)
以下就是我的masm的加压的路径,可以看到有几个exe文件,其中debug和masm以及link是学习汇编的过程中常用的。

5. 配置dosbox下源代码和编译工具的路径
找到dosbox的配置文件,有三种方式
1.桌面-DOSBox 0.74(快捷方式)-右键-属性-快捷方式-打开文件所在的位置(如果没有,找起始位置,C:\Program Files\DOSBox-0.74,在运行中输入打开文件夹),双击DOSBox 0.74 Options.bat
2.菜单-DOSBox 0.74 Options(windows 10 系统的用这个方法比较方便)
3.直接打开 C:\Users\Administrator\AppData\Local\DOSBox\dosbox-0.74.conf (Administrator是你当前用户名称)
在XP下 C:\Documents and Settings\用户名\Local Settings\Application Data\DOSBox\dosbox-0.74.conf
**配置:**找到 [autoexec] 一般就在文件底部,添加如下配置(双冒号是注释作用)

        mount c: c:\        #真实机器的路径C:\ 挂载成 dosbox里C:盘mount d: d:\        #真实机器的路径D:\ 挂载成 dosbox里D:盘path d:\masm\masm   #设置dosbox下环境变量PATH,就是你masm解压的位置,masm.exe等存放的位置           d:                  #切换到dosbox下的D:盘cd d:\masm\code     #切换到dosbox下的源代码目录(asm源代码文件所在的目录)                     cls                 #清屏

注意:在dosbox中的命令或者文件名不论大小写。

二、第一个汇编程序

这里实现在屏幕上输出:Hello world

1. 编写代码
在D:\masm\code下创建一个后缀位asm的hello.asm文件,在里面编写代码如下:

assume cs:code
data segmentdb 'Hello world.'                         ; 定义字节,表示其后每个操作数占有一个字节(1Byte)单元
data ends
code segmentstart: mov ax,datamov ds,axmov ax,0b800h                        ; 显存起始地址mov es,axmov bx,0                           ; db内容的起始位置mov si,6e0h                          ; 对应显示的位置mov cx,12                          ; 循环次数,对应显示多少个字符s:mov al,[bx]    mov es:[si+60+320],almov byte ptr es:[si+61+320],71h    ; 以上显示白底蓝字inc bx                                ; bx + 1, inc相当于自增add si,2                          ; si + 2loop s                             ; 循环执行s:后面的代码cx次mov ax,4c00hint 21h                         ; 这两句作用是调用 INT 21H 的 4CH 号中断,安全退出程序
code ends
end start

2. 编译和连接

打开dosbox,会出现两个窗口,我们一般使用的是如下窗口:

编译命令: masm hello

这里的hello相当于hello.asm文件
然后会提示要求输入obj的名称等等,这里不用理会,直接三次回车(表示默认与asm文件同名),假如没有出错(假如出错,一般是文件找不到或者语法错误),则编译成功结果如下:

连接命令:link hello

这里的 hello 指的是编译成功后产生的 hell.obj 文件,这里同样的不用理会提示输入exe名称等,直接三次回车,然后看到一个warnning:no stack segment,不用理会,连接成功如下:

3. 运行

执行命令: hello

需要注意的是,这里的exe文件都是在dosbox下模拟8086CPU汇编程序编译连接而来,所以必须在dosbox环境下执行。
这里的 hello 指的是 hello.exe,结果将会在dosbox的窗口下打印“Hello world.” :

4. debug

debug命令: debug.exe hello.exe

**注意:**这里必须把 .exe 写出来,不能省略后缀,否则会报错extend error2。
在debug中 r 命令表示查看或改变寄存器中的值,d 命令查看内存中的值, e 命令改写内存中的值,t 命令执行一条指令(t n 表示执行n条指令)

感谢您的阅读,欢迎参观我的个人网站:闲乐小站【www.xianlewang.cn】

8086CPU汇编语言学习笔记相关推荐

  1. 32位汇编语言学习笔记(45)--测试简单文件操作接口(完)

     这是<Assembly Language step by step programming with linux>书中的最后一个程序,也是全书中的最复杂的一个程序. 首先看一下这个程 ...

  2. MIPS汇编语言学习笔记23:if 语句分支指令

    C语言 #include<stdio.h> int main() {int i = 3;if (i < 5){printf("yes!\n");}else{pri ...

  3. MIPS汇编语言学习笔记07:打印双精度浮点数

    课程原视频: https://www.bilibili.com/video/BV19J411y7pA?p=7 程序功能: 设定两个双精度浮点型数据,将其相加后打印输出. 代码: .datamyDoub ...

  4. windows下32位汇编语言学习笔记

    windows下32位汇编语言学习笔记 第一章  第一章 背景知识 80x86处理器的存储器 4个数据寄存器 EAX,EBX,ECX,EDX EAX寄存器 所有API函数的返回值都保存在EAX里,注意 ...

  5. win32汇编语言学习笔记(三)

    汇编语言学习笔记(三) CH3.Windows汇编基础 .386 .model flat,stdcall option casemap:none 定义程序使用的指令集.工作模式 相应的还有:.8086 ...

  6. MIPS汇编语言学习笔记11:整数减法 (mult方法)

    任务:整数相乘,并输出打印. 代码: .dataintA: .word 5intB: .word 2 .textli $v0, 1lw $a1, intAlw $a2, intBmult $a1, $ ...

  7. 菜鸟的汇编语言学习笔记

    汇编语言学习笔记 1.1机器语言 计算机发展初期,人们都是用机器语言进行编程的,这也是人们能实现编程控制计算机的最低级别.那么机器语言是什么样子的呢?就是用0和1组成的一个串(形如011010101) ...

  8. Linux下汇编语言学习笔记12 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  9. Linux下汇编语言学习笔记65 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

最新文章

  1. The Future of Silverlight --December 2, 2010 at 9:00
  2. linux svn磁盘空间满,Linux svn checkout时候总报设备上没有空间
  3. python如何获取信息_如何使用Python获取系统信息?
  4. 创业路上有指引,永洪CEO给企业服务型创业公司的融资建议
  5. 如何阅读3,500万个博客?
  6. mysql主从报错_Mysql主从报错锦集
  7. CCNA学习与实验指南(640-802)
  8. pandas 读取/保存压缩格式的csv文件.csv.gz
  9. 程序员面试金典——5.5整数转化
  10. 漏洞扫描与云服务器的安全防护
  11. 【MATLAB学习】02:MATLAB绘图
  12. MySQL 基础一(B站黑马程序员MySQL教程笔记)
  13. java security provide_Java SecurityManager類代碼示例
  14. 信息安全实验三 :PGP邮件加密软件的使用
  15. css 实现心形加载动画
  16. Windows下WinRar创建自解压文件
  17. 美业SaaS的创业分享之[销售]:销售和销售管理
  18. ONE~~~~~~~~~
  19. 如何区分电脑上的硬件和软件?
  20. Stanford cs140 Pintos Project2实验目标

热门文章

  1. Flexible(flex)布局入门到彻底理解
  2. lua绝对路径linux,Lua路径
  3. 手机蓝牙控制继电器实验
  4. “寒冬”影响,年薪百万如今沦为流浪汉
  5. 第47件事 幂率法则在产品运营种的应用
  6. 如何调成适用计算机的分辨率,电脑分辨率多少合适,教您电脑怎么设置分辨率...
  7. QT调用打印机实现模板打印功能(手把手教学!!!)
  8. 基于python的SQLite数据库增删改查
  9. gitlab各种角色的权限
  10. 宁波阿里云代理商:阿里巴巴CEO张勇:阿里云是一家云计算产品公司