Win10下C语言转8086汇编

Win10下C语言转8086汇编

简介

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

开始

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

image-20210913164159614

写C代码

双击启动TC2.0.exe,打开了Trubo C编写C语言代码。

image-20210913164308670

选中File->New,然后写个HelloWord的代码。

image-20210913171452542

接着按F10,然后继续选中File,接着选中Save,保存为HelloWorld.C

image-20210913171537474

然后编译链接看看,直接按F9,编译通过没有报错,并且目录下生成了EXE。

image-20210913174537220

image-20210913175150622

直接ctrl+f9运行程序,并按alt+f5切换到DOS界面,就能看到HelloWorld了。

image-20210913175403956

漂亮!终于用C写了个DOS版的Hello,World 之前都是用汇编写的。

转换成汇编代码

先切换到DOS的shell。

image-20210913183826238

然后执行如下命令tcc -S -ml -I./include -L./lib HelloWorld.c

image-20210913184026832

成功后多出一个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

posted @ 2021-08-23 18:47  VxerLee昵称已被使用  阅读(1808)  评论(0编辑  收藏  举报