Win10下C语言转8086汇编
简介
最近学习《王爽汇编》,然后突发奇想,想一边写C语言用编译器将其翻译成汇编代码,然后对照着学习高级代码转换低级代码的过程,经过一番搜索后发现个不错的方案:DOSBOX + Turbo C。
开始
直接下网上大佬集成好的带TC版的DOSBOX,我从CSDN上下的挺坑要积分,我这里上传到百度云给各位大佬下载传送下载 提取码:6ara 。
写C代码
双击启动TC2.0.exe
,打开了Trubo C编写C语言代码。
选中File->New
,然后写个HelloWord
的代码。
接着按F10
,然后继续选中File
,接着选中Save
,保存为HelloWorld.C
然后编译链接看看,直接按F9,编译通过没有报错,并且目录下生成了EXE。
直接ctrl+f9
运行程序,并按alt+f5
切换到DOS界面,就能看到HelloWorld了。
漂亮!终于用C写了个DOS版的Hello,World 之前都是用汇编写的。
转换成汇编代码
先切换到DOS的shell。
然后执行如下命令tcc -S -ml -I./include -L./lib HelloWorld.c
成功后多出一个HelloWorld.asm
文件,汇编代码如下。
ifndef ??version
?debug macro
endm
endif
?debug S "hellowor.c"
HELLOWOR_TEXT segment byte public 'CODE'
DGROUP group _DATA,_BSS
assume cs:HELLOWOR_TEXT,ds:DGROUP
HELLOWOR_TEXT ends
_DATA segment word public 'DATA'
d@ label byte
d@w label word
_DATA ends
_BSS segment word public 'BSS'
b@ label byte
b@w label word
?debug C E99A8D2D530A68656C6C6F776F722E63
?debug C E937892D53112E2F696E636C7564655C737464696F2E68
?debug C E900501D11122E2F696E636C7564655C7374646172672E68
_BSS ends
HELLOWOR_TEXT segment byte public 'CODE'
; ?debug L 2
_main proc far
; ?debug L 4
push ds
mov ax,offset DGROUP:s@
push ax
call far ptr _printf
pop cx
pop cx
; ?debug L 5
xor ax,ax
jmp short @1
@1:
; ?debug L 6
ret
_main endp
HELLOWOR_TEXT ends
?debug C E9
_DATA segment word public 'DATA'
s@ label byte
db 72
db 101
db 108
db 108
db 111
db 44
db 87
db 111
db 114
db 108
db 100
db 33
db 13
db 10
db 0
_DATA ends
extrn _printf:far
HELLOWOR_TEXT segment byte public 'CODE'
HELLOWOR_TEXT ends
public _main
end
内容来源于网络如有侵权请私信删除
文章来源: 博客园
- 还没有人评论,欢迎说说您的想法!