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



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM