8086CPU汇编语言学习笔记

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

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是学习汇编的过程中常用的。
masm的命令

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                 #清屏

windows10下打开dosbox配置文件

配置

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

二、第一个汇编程序

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

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

assume cs:code
data segment
  db 'Hello world.'							; 定义字节,表示其后每个操作数占有一个字节(1Byte)单元
data ends
code segment
  start: mov ax,data
         mov ds,ax
         mov ax,0b800h						; 显存起始地址
         mov es,ax
         
         mov bx,0							; db内容的起始位置
         mov si,6e0h   						; 对应显示的位置
         mov cx,12							; 循环次数,对应显示多少个字符
       s:mov al,[bx]    
         mov es:[si+60+320],al
         mov byte ptr es:[si+61+320],71h	; 以上显示白底蓝字
         inc bx								; bx + 1, inc相当于自增
         add si,2							; si + 2
         loop s								; 循环执行s:后面的代码cx次
         
         mov ax,4c00h
         int 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.itison.cn】

发布了43 篇原创文章 · 获赞 85 · 访问量 8万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览