鱼C论坛

 找回密码
 立即注册
查看: 3762|回复: 8

[已解决]linux下如何搭建汇编学习环境

[复制链接]
发表于 2020-3-19 12:15:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最近在学汇编,系统用的ubuntu18.04,求问怎样在linux里搭建汇编学习环境
最佳答案
2020-3-19 23:13:25
一条make命令搞定
这里是使用nasm编译器,语法和masm有些不一样

main.asm
segment .code
..start:
        mov     ax, data
        mov     ds, ax
        mov     es, ax
        mov     ax, stack
        mov     ss, ax
        mov     sp, 128

        mov     dx, msg
        mov     ah, 0x09
        int     0x21            ; 显示字符串
        mov     ax, 0x4c00
        int     0x21

segment .data
msg:    db 'hello world!', 0x0d, 0x0a, '

Makefile
[code]main.exe: main.obj
        alink -c -oEXE $<

main.obj: main.asm
        nasm -f obj -o $@ $<

run: Image
        qemu-system-i386 -hda $<

Image: main.exe
        sudo kpartx -av $@
        sudo mount /dev/mapper/loop0p1 mnt
        sudo cp $< mnt/SHARE
        sudo umount mnt
        sudo kpartx -dv $@

clean:
        rm -f main.exe main.obj

ms_dos.tar.zip (604.34 KB, 下载次数: 6)

segment .stack stack
        resb 128
[/code]

Makefile


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-19 16:31:23 | 显示全部楼层
的确可以用linux学8086汇编语言,不过还是不建议折腾这个,建议使用教程中的环境,也就是xp系统,现在可以是虚拟机 + xp
实在不行就用dosbox

如果你确实要在linux下折腾,那你可以试试qemu,bochs + dos系统,或者在linux下装一个xp虚拟机
当然也可以直接用gas(as)编译16位汇编语言程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 17:54:49 | 显示全部楼层
可以尝试用wine运行dosbox
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-19 18:45:20 | 显示全部楼层
雪球丶 发表于 2020-3-19 17:54
可以尝试用wine运行dosbox

就没有类似gcc那种在命令行就能编译运行的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 19:03:27 | 显示全部楼层
就是要努力呀 发表于 2020-3-19 18:45
就没有类似gcc那种在命令行就能编译运行的吗

不晓得啊,你找到了通知我一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-19 19:12:53 | 显示全部楼层
雪球丶 发表于 2020-3-19 19:03
不晓得啊,你找到了通知我一下

。。。你找到了也通知我一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 20:49:05 | 显示全部楼层
就是要努力呀 发表于 2020-3-19 19:12
。。。你找到了也通知我一下
https://www.japheth.de/JWasm.html#jwdownload
你看看这个,我的surface硬盘太小了没法装虚拟机帮你试,不靠谱别怨我
不过建议如果是初学还是用跟教程一样的工具,免得出问题难解决耽误正事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 23:13:25 | 显示全部楼层    本楼为最佳答案   
一条make命令搞定
这里是使用nasm编译器,语法和masm有些不一样

main.asm
segment .code
..start:
        mov     ax, data
        mov     ds, ax
        mov     es, ax
        mov     ax, stack
        mov     ss, ax
        mov     sp, 128

        mov     dx, msg
        mov     ah, 0x09
        int     0x21            ; 显示字符串
        mov     ax, 0x4c00
        int     0x21

segment .data
msg:    db 'hello world!', 0x0d, 0x0a, '

Makefile
[code]main.exe: main.obj
        alink -c -oEXE $<

main.obj: main.asm
        nasm -f obj -o $@ $<

run: Image
        qemu-system-i386 -hda $<

Image: main.exe
        sudo kpartx -av $@
        sudo mount /dev/mapper/loop0p1 mnt
        sudo cp $< mnt/SHARE
        sudo umount mnt
        sudo kpartx -dv $@

clean:
        rm -f main.exe main.obj

ms_dos.tar.zip (604.34 KB, 下载次数: 6)

segment .stack stack
        resb 128
[/code]

Makefile


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 23:18:00 | 显示全部楼层
1.png
2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 11:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表