汇编语言写出的helloworld运行过程
一:首先说一点,这篇文章建立在懂一点汇编的基础上,有几个简单的命令,说以下:
1:-r命令
-r 查看寄存器
-r 寄存器 (如 -r AX) 修改寄存器的值;
2:-d命令
-d 地址:xxxx:xx (如 -d 1000:0)从1000段地址,0号偏译地址开始的128个字节的内存数据,接着-d是接下来的128个字节;
-d 地址:xxxx:xx xx (如 -d 1000:0 f)查询1000:0-1000:f的内存单元;
3:-e 命令:
-e 地址:xxxx:xx [data] [data].... (如 -e 1000:0 1 2 3 4 5 6 7 8 9 a b c d e f )表示在内存单元1000:0开始的地址写入数据0,1000:1写入数据1,...1000:f写入数据f
-e地址:xxxx:xx (如:-e 1000:0)表示自动一个一个输入值,输入完成时按回车退出;
4:-u命令:表示接下来执行的命令
-u 地址:xxxx:xx在某内存查看命令 (如-u 1000:0)
注: 如在1000:0 写入-e 1000:0 e5 d8;
-u 1000:0就可以查看写入的命令
5:-t命令
-t 执行 -u中的命令,必须保证CS,IP寄存器的值CS=1000,IP=0,如果不是这样,用-r 寄存器改变;
6:-a 用汇编指令写入数据
-a 地址:xxxx:xx(如-a 1000:0 mov ax,1),可以用-t命令执行!
二:(如果你是64位机的话,32位不用,可是直接在dos下) 接下来,必须有的几个工具,
DOSBox.exe ,masm.exe,link.exe,debug;
将这几个工具放入一个目录下 (如:E:\),运行DOSBox.exe,输入mount c: E:\
接下来将写的汇编文件放入E:\,既和那些工具放在一起
接下来输入:c:
接下来输入:masm.exe
接下来输入:hw.txt;() (这个是一个.txt文件,存放的汇编代码,注意,文件名不要太长,否则会失败!)
成功后如图,同时在E:\ 会生成一个hw.obj文件
接下来输入:link.exe
接下来输入:hw.obj;
结果如图:同时在E:\会生成一个hw.exe可执行文件
接下来输入:cls
接下来输入:hw.exe就可以出现helloworld了!
如图:
三:hw.txt文件源代码:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
DB "HELLO WORLD" ;存储要显示的数据
DATA ENDS
CODE SEGMENT
START:
MOV AX,0B800H ;显存的段地址
MOV ES,AX ;es做显存段地址
MOV AX,DATA ;把标记data的地址给ax
MOV DS,AX ;ds存储data的段地址
MOV BX,0 ;bx置零,用作数据段的寻址
MOV DI,0 ;di用于显存的寻址
MOV CX,11 ;循环11次,因为hello world有11个字符
;以下为显示过程
S:
MOV AL,[BX] ;把bx指向的内存单元中的数据给al
MOV AH,2 ;设置绿色字体
MOV ES:[DI],AX ;送入显存
INC BX ;bx+1
ADD DI,2 ;di+2
LOOP S ;循环执行S
MOV AH,1
INT 21H ;调用中断暂停,等待键盘输入一个字节
MOV AX,4C00H
INT 21H ;调用中断退出程序
CODE ENDS
END START
汇编语言写出的helloworld运行过程的更多相关文章
- java环境搭建和写出一个Helloworld
一.安装环境和配置环境变量(必要环节) 安装java并配置环境变量 :在"系统变量"中设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击 ...
- [dart学习]第一篇:windows下安装配置dart编译环境,写出helloworld
前言 博主非科班出身,平时多用C语言,最近想了解学习一门第二语言,看上了可用于移动开发的目前还小众一点dart,准备用一段比较长的时间来慢慢学习.理解. 关于dart语言不再详细介绍了,大家可以访问 ...
- [大数据从入门到放弃系列教程]在IDEA的Java项目里,配置并加入Scala,写出并运行scala的hello world
[大数据从入门到放弃系列教程]在IDEA的Java项目里,配置并加入Scala,写出并运行scala的hello world 原文链接:http://www.cnblogs.com/blog5277/ ...
- JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象
Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...
- 如何写出没有BUG的代码
1947年9月9日,美国海军准将 Grace Hopper 在哈佛学院计算机实验室里使用 Mark II 和 Mark III 计算机进行研究工作.她的团队跟踪到 Mark II 上的一个错误,操作人 ...
- Swing:LookAndFeel 教程第一篇——手把手教你写出自己的 LookAndFeel
本文是 LookAndFeel 系列教程的第一篇. 是我在对 Swing 学习摸索中的一些微薄经验. 我相信,细致看全然系列之后.你就能写出自己的 LookAndFeel. 你会发现 Swing 原来 ...
- 如何写出没有 bug 的代码?
来源:www.cnblogs.com/sherrywasp/p/9262877.html 1947年9月9日,美国海军准将 Grace Hopper 在哈佛学院计算机实验室里使用 Mark II 和 ...
- 写出形似QML的C++代码
最开始想出的标题是<Declarative C++ GUI库>,但太标题党了.只写了两行代码,连Demo都算不上,怎么能叫库呢……后来想换掉“库”这个字,但始终找不到合适词来替换.最后还是 ...
- Oracle如何写出高效的SQL
转载:http://www.blogjava.net/ashutc/archive/2009/07/19/277215.html 1.选择最有效率的表明顺序(只在基于规则的优化器中有效) Oracle ...
随机推荐
- Oracle 正则表达式函数-REGEXP_SUBSTR 使用例子
原文在这 戳 REGEXP_SUBSTR 5个参数 第一个是输入的字符串 第二个是正则表达式 第三个是标识从第几个字符开始正则表达式匹配.(默认为1) 第四个是标识第几个匹配组.(默认为1) 第五个是 ...
- BufferedReader与Scanner的区别
在Java中,我们都知道Java的标准输入串是System.in.但是我们却很少在Java中看到谁使用它,这是因为我们平时输入的都是一个字符串或者是一个数字等等.而System.in提供的read方法 ...
- maven打包日志输出优化-去掉泛型与过时的警告
pom.xml配置 1.使用eclipse编译 <!-- Eclipse编译代码时,使用的是自带的JDT(Java Development Tools), 而Maven默认使用的是JAVA_HO ...
- Qt4.8.5在ARM9上的移植
Qt4.8.5在ARM9开发板上的移植 以前移植过qtopia-embedded-2.2.0,俗称Qt/E,在早期的Qt框架中是使用X11桌面服务器系统,无法应用于嵌入式平台,为此产生了qtopia, ...
- Html5shiv
说明编辑 越来越多的站点开始使用 HTML5 标签.但情况是还有很多人在使用IE6,IE7,IE8.为了让所有网站浏览者都能正常的访问网站, 2解决方案编辑 有下面两个: 为网站创建多套模板,通过程序 ...
- JAVA用途
在现今阶段,最有前途的开发语言当属Java,Java语言是跨平台的,Write Once,Run Anywhere是Java的一句口号,学Application编程,可以在计算机上写程序,学Apple ...
- [Vuejs] 关于vue-router里面的subRoutes
刚学习vue,可能有使用不对的地方,希望没有对大家造成困扰! 使用vue-router,为了能够更好的管理.vue文件,需要用到子路由. 先看个错误的例子 routers.js '/company': ...
- VS2017 RC IIS Express 无法启动 环境不正确
Unable to start program 'C:\Program Files (x86)\IIS Express\iisexpress.exe'. The environment is inco ...
- 【笔记】科普createDocumentFragment() 创建文档碎片节点
上一篇文章说到了动态添加文本节点的方法那如果我们要添加多个文本节点或者元素节点呢? 大家可能会想到用循环然后逐个逐个添加 但是别忘了js 还提供了创建一个文本碎片的方法 createDocumentF ...
- linux shell脚本使用结构化命令(2)
一.for命令 二.while命令 三.until命令 1.for命令基本格式 for var in list do commands done oracle@suse:~/testshell> ...