| 
 | 
 
 
发表于 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 
 
 
 |   
 
 
 
 |