鱼C论坛

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

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

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

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

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

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

main.asm
  1. segment .code
  2. ..start:
  3.         mov     ax, data
  4.         mov     ds, ax
  5.         mov     es, ax
  6.         mov     ax, stack
  7.         mov     ss, ax
  8.         mov     sp, 128

  9.         mov     dx, msg
  10.         mov     ah, 0x09
  11.         int     0x21            ; 显示字符串
  12.         mov     ax, 0x4c00
  13.         int     0x21

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

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

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

  21. run: Image
  22.         qemu-system-i386 -hda $<

  23. Image: main.exe
  24.         sudo kpartx -av $@
  25.         sudo mount /dev/mapper/loop0p1 mnt
  26.         sudo cp $< mnt/SHARE
  27.         sudo umount mnt
  28.         sudo kpartx -dv $@

  29. clean:
  30.         rm -f main.exe main.obj
复制代码


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

segment .stack stack
        resb 128
[/code]

Makefile


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

使用道具 举报

发表于 2020-3-19 17:54:49 | 显示全部楼层
可以尝试用wine运行dosbox
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

就没有类似gcc那种在命令行就能编译运行的吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

不晓得啊,你找到了通知我一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

。。。你找到了也通知我一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 20:49:05 | 显示全部楼层
就是要努力呀 发表于 2020-3-19 19:12
。。。你找到了也通知我一下
  1. https://www.japheth.de/JWasm.html#jwdownload
复制代码

你看看这个,我的surface硬盘太小了没法装虚拟机帮你试,不靠谱别怨我
不过建议如果是初学还是用跟教程一样的工具,免得出问题难解决耽误正事
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

main.asm
  1. segment .code
  2. ..start:
  3.         mov     ax, data
  4.         mov     ds, ax
  5.         mov     es, ax
  6.         mov     ax, stack
  7.         mov     ss, ax
  8.         mov     sp, 128

  9.         mov     dx, msg
  10.         mov     ah, 0x09
  11.         int     0x21            ; 显示字符串
  12.         mov     ax, 0x4c00
  13.         int     0x21

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

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

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

  21. run: Image
  22.         qemu-system-i386 -hda $<

  23. Image: main.exe
  24.         sudo kpartx -av $@
  25.         sudo mount /dev/mapper/loop0p1 mnt
  26.         sudo cp $< mnt/SHARE
  27.         sudo umount mnt
  28.         sudo kpartx -dv $@

  29. clean:
  30.         rm -f main.exe main.obj
复制代码


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

segment .stack stack
        resb 128
[/code]

Makefile


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 23:18:00 | 显示全部楼层
1.png
2.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 09:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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