Win10下C语言转8086汇编
阅读原文时间:2023年07月09日阅读:1

目录

Win10下C语言转8086汇编

最近学习《王爽汇编》,然后突发奇想,想一边写C语言用编译器将其翻译成汇编代码,然后对照着学习高级代码转换低级代码的过程,经过一番搜索后发现个不错的方案:DOSBOX + Turbo C。

直接下网上大佬集成好的带TC版的DOSBOX,我从CSDN上下的挺坑要积分,我这里上传到百度云给各位大佬下载传送下载提取码:6ara 。

双击启动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

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器