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

Win10下C语言转8086汇编的更多相关文章

  1. 【8086汇编-Day1】预备知识

    菜鸟的8086汇编入门之旅,偶有错处恭请大佬们指正. Ⅰ· 闲说一下 我为什么学汇编?相对于晦涩难懂的01010101011010机器语言(高低电平变化驱动机器做出不同反应),汇编语言用更便于记忆和使 ...

  2. LINUX下C语言编程基础

    实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...

  3. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  4. win10下安装ubuntu18.04

    在win10下安装Ubuntu18.04,双系统共存.Ubuntu 18.04 使用的是Gnome桌面. 查看系统的启动模式: Win+R打开运行,输入msinfo32,回车查看系统信息.在BIOS模 ...

  5. Linux下C语言编程基础学习记录

    VIM的基本使用  LINUX下C语言编程 用gcc命令编译运行C语言文件 预处理阶段:将*.c文件转化为*.i预处理过的C程序. 编译阶段:将*.i文件编译为汇编代码*.s文件. 汇编阶段:将*.s ...

  6. 在c语言中嵌入汇编语句,对于我来说相当难。

    今天早上在csdn论坛上看到一个帖子http://topic.csdn.net/u/20120917/14/82f42e17-977a-4824-95bd-7b79db15d283.html:“C语言 ...

  7. 20155322 2017-2018-1《信息安全系统设计》第二周 课堂测试 Linux下C语言实现MYOD

    20155322 2017-2018-1<信息安全系统设计>第二周 课堂测试 Linux下C语言实现MYOD [博客目录] 静态库测试 实现方法 相关资料 操作 动态库测试 实现方法 相关 ...

  8. Win10下安装zookeeper

    Win10下安装zookeeper 注册中心zookeeper的安装 0.去Apache官网下载zookeeper http://zookeeper.apache.org/ 2.找到解压路径的conf ...

  9. 8086汇编——Introduction(8086内部寄存器,段寄存器,存储器分段)

    8086汇编--Introduction 一.8086CPU的三种工作模式 实模式:只有低20位地址线起作用,仅能寻址第一个1MB的内存空间.MS DOS运行于该模式下. 保护模式:在该模式下,机器可 ...

随机推荐

  1. Git报错-refusing to merge unrelated histories

    执行git pull 时报错: 出现这个问题的最主要原因还是在于本地仓库和远程仓库实际上是独立的两个仓库.假如我之前是直接clone的方式在本地建立起远程github仓库的克隆本地仓库就不会有这问题了 ...

  2. C# 获取动态类中所有的字段

    /// <summary>        /// 动态类 获取字典集合        /// </summary>        /// <typeparam name= ...

  3. Centos8.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台

    前言 本篇文章引用了小菠萝测试笔记,大部分内容非原创,基于自身实操过程中,完善了部分. 本篇随笔是在Linux上搭建的,后面会补充在docker以及k8s上如何部署安装 工具介绍 工具 介绍 Jmet ...

  4. Shell系列(17)- 配置文件功能(待完善)

    配置文件功能 文件名 功能 相关联命令 /etc/profile USER变量 LOGNAME变量 MAIL变量 PATH变量 HOSTNAME变量 umask 调用/etc/profile.d/*. ...

  5. 软件测试从业者必备的Linux命令(完整篇)

    观点: 关于Linux,测试从业者,看这篇文章就够了 . 具体,往下看 : 网上关于Linux资料太多.太杂,学习没有重点,特别是对于没有基础的从业者,期望通过那些文档,去自学掌握Linux,可能性太 ...

  6. cgroup配置

    待续... https://docs.hortonworks.com/HDPDocuments/HDP3/HDP-3.1.0/data-operating-system/content/enablin ...

  7. AVS 端能力之蓝牙模块

    该类为蓝牙端能力处理类,主要负责蓝牙设备配对和蓝牙音频播放功能. 功能简介 实现蓝牙设备的启动发现模式.扫描蓝牙设备.建立蓝牙连接功能 实现蓝牙设备音频播放.停止.上一首.下一首功能 其它细节参考&l ...

  8. P7854-「EZEC-9」GCD Tree【构造】

    正题 题目连接:https://www.luogu.com.cn/problem/P7854 题目大意 给出\(n\)数字的一个序列\(a\). 现在要求构造一棵树,使得对于任意的\((x,y)\)都 ...

  9. kendoUI 多选下拉列表 kendoMultiSelect

    问题1:被重复渲染 点击新增按钮----弹出模态框 多选下拉列表在多选框中只是初始化过一次.但是每次点击新增后  发现 多选下拉列表 被重复渲染了 解决方案 在 新增时  先将其父元素div中  的s ...

  10. HDFS 10 - HDFS 的联邦机制(Federation 机制)

    目录 1 - 为什么需要联邦 2 - Federation 架构设计 3 HDFS Federation 的不足 版权声明 1 - 为什么需要联邦 单 NameNode 的架构存在的问题:当集群中数据 ...