一:首先说一点,这篇文章建立在懂一点汇编的基础上,有几个简单的命令,说以下:

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运行过程的更多相关文章

  1. java环境搭建和写出一个Helloworld

    一.安装环境和配置环境变量(必要环节) 安装java并配置环境变量 :在"系统变量"中设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击 ...

  2. [dart学习]第一篇:windows下安装配置dart编译环境,写出helloworld

    前言 博主非科班出身,平时多用C语言,最近想了解学习一门第二语言,看上了可用于移动开发的目前还小众一点dart,准备用一段比较长的时间来慢慢学习.理解. 关于dart语言不再详细介绍了,大家可以访问  ...

  3. [大数据从入门到放弃系列教程]在IDEA的Java项目里,配置并加入Scala,写出并运行scala的hello world

    [大数据从入门到放弃系列教程]在IDEA的Java项目里,配置并加入Scala,写出并运行scala的hello world 原文链接:http://www.cnblogs.com/blog5277/ ...

  4. JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象

    Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...

  5. 如何写出没有BUG的代码

    1947年9月9日,美国海军准将 Grace Hopper 在哈佛学院计算机实验室里使用 Mark II 和 Mark III 计算机进行研究工作.她的团队跟踪到 Mark II 上的一个错误,操作人 ...

  6. Swing:LookAndFeel 教程第一篇——手把手教你写出自己的 LookAndFeel

    本文是 LookAndFeel 系列教程的第一篇. 是我在对 Swing 学习摸索中的一些微薄经验. 我相信,细致看全然系列之后.你就能写出自己的 LookAndFeel. 你会发现 Swing 原来 ...

  7. 如何写出没有 bug 的代码?

    来源:www.cnblogs.com/sherrywasp/p/9262877.html 1947年9月9日,美国海军准将 Grace Hopper 在哈佛学院计算机实验室里使用 Mark II 和 ...

  8. 写出形似QML的C++代码

    最开始想出的标题是<Declarative C++ GUI库>,但太标题党了.只写了两行代码,连Demo都算不上,怎么能叫库呢……后来想换掉“库”这个字,但始终找不到合适词来替换.最后还是 ...

  9. Oracle如何写出高效的SQL

    转载:http://www.blogjava.net/ashutc/archive/2009/07/19/277215.html 1.选择最有效率的表明顺序(只在基于规则的优化器中有效) Oracle ...

随机推荐

  1. Ubuntu 16.04 Steam

    Ubuntu 16.04安装Steam,直接去Steam官网下载客户端安装包即可.

  2. JavaScript方法call,apply,caller,callee,bind的使用详解及区别

    一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). 即  “某个方法”当做“指定的某个对象”的“方法”被执行. Js代 ...

  3. python3爬取网页

    爬虫 python3爬取网页资源方式(1.最简单: import'http://www.baidu.com/'print2.通过request import'http://www.baidu.com' ...

  4. [转]spring_bean的属性

    1.parent 表示继承的父类 如果有很多继承同一个父类的BEAN 那么在配置文件中实例那些BEAN时候可以省略掉父类已经注入的属性 bean定义继承父bean定义,它可以覆盖父bean的一些值,或 ...

  5. iOS Bundle display name国际化

    iOS app包显示名称可以国际化,具体方法如下: 编辑Info.plist,添加一个新的属性:Application has localized display name,设置该属性的类型为bool ...

  6. 关于IE11版本下JS中时间判断的问题

    最近在做代码的优化及浏览器的兼容问题.遇到了谷歌.火狐.360兼容模式.IE(8以上)版本对时间判断大小的问题 . 在谷歌.火狐.360.IE11以下IE8以上版本下 var d1="201 ...

  7. 报表控件NCreport教程:子查询系统设计

    数据报表中经常需要用到主从数据关系,比如发票.订单等一类的特殊文件,在报表控件NCreport中也不例外.数据报表至少有一个表头和一个通过 主键和外键关联的相关细节数据集.子查询系统则是通过父数据源驱 ...

  8. Django(三)

    1.Django请求的生命周期         路由系统 -> 视图函数(获取模板+数据-->渲染) -> 字符串返回给用户   2.路由系统         /index/    ...

  9. 【python】如何在某.py文件中调用其他.py内的函数

    假设名为A.py的文件需要调用B.py文件内的C(x,y)函数 假如在同一目录下,则只需 import B if __name__ == "__main__": B.C(x,y) ...

  10. JVM之几种垃圾收集器简单介绍

    本文中的垃圾收集器研究背景为:HotSpot+JDK1.7 一.垃圾收集器概述 如上图所示,垃圾回收算法一共有7个,3个属于年轻代.三个属于年老代,G1属于横跨年轻代和年老代的算法. JVM会从年轻代 ...