如何使用dosbox运行汇编语言程序

如何使用dosbox运行汇编语言程序,第1张

①安装好dosbox,然后找到“dosbox...options.bat”,双击它,(别急着点dosbox.exe)。

图1

②在d出的文本编辑器(如,记事本)中调整设置,找到[autoexec]所在行,添加两行(以d:\为例):

mount c: d:\

c:

图2

③下载并安装旁神闭好nasm(一种小的汇编软件)

建议在dosbox中汇编并运行(按图3下文件、打开、解到d:\123);也可以在windows下汇编,dosbox里运行(这个我之前写过……)

图3

④打开dosbox,瞎吵依次输入命令

cd 123

nasm

可以看到nasm安装成功并且能使用了,下一步是准运裂备汇编代码

⑤在d:\123目录下新建一个文本文档123.txt

输入以下代码并保存(XXX可以随便改,$符号要保留)

org 256

jmp begin

s db 'hello, world! @author: XXX$'

begin:

mov dx,s

mov ah,9

int 21h

mov ax,4c00h

int 21h

⑥在dosbox的黑窗口里面继续输入以下命令

nasm 123.txt -o 123.com

123

然后就可以看到输出的字符串

hello, world! @author: XXX

debug是16位的调试工具,目前基本上没有用。而且它缺少宏等功能,写汇编语言基本上活受罪,现在除了学校里面学习,没人用了。

nasm是跨平台的开源工具,功能迅大相比MASM很薄弱。所以在Windows平台下面不太好用。Unix/Linux平台下面倒是很有些用户群了。

MASM可以编写Windows程序,支持宏,一直随着Visual Studio的更新而更新,支持最新的64位 *** 作系统,用起来也比较方便,但是学习资料很少(呵呵,你找的到最新的学习资料么?)。它主要用来对VC++写的程序猜渗进行局部调优。但一般也不用它!为什么?看后面!

还有一个你没有说到的就是VC中的__asm { }指令,一般我们都用它来写汇编语言,进行VC的局部调优。

你说的那三个东西,都是基于Intel语法的,还有一个gas汇编器,是AT&T语法的,那个东西是穗昌脊给经由gcc编译的C++语言代码进行汇编步骤的……根本不适合由人来书写它的代码。

就这些,答完了。

习惯了ARM汇编,80x86的生疏了。下面是个人见解:

对标号和跳转指令的处理(gas,nasm,masm...),依赖于汇编器。

(1)jmp begin 不改变便CS,所以后面在没有长跳转之前CS一直是0100H。

后面有mov sp,0100h,应该是递减堆栈,大小为0x0100H。

(2)add eax,lablel_gdt

label_gdt 是相对于CS(0x0100H)的偏移,得到label_gdt的绝对地址。

(3)add eax,label_seg_code32

同改迟理,也是没问题的,计算出label_seg_code32的绝对地址。

这种问题,只要想明白“绝陆岩对地址”和“相对地址”的概念就好说了。

开启保护模式之后,“段”的概念就不像8086那样了核悉李,这个也要转变一下观念。

根据汇编器的不同,长跳转的支持形式也有所不同。

jmp far ptr ...

jmp dword ptr...

建议搜索一下“段间跳转”。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12410561.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存