`
zhaohaolin
  • 浏览: 1004000 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

汇编入门

阅读更多

计算机是一门纯操作性的学科,编程也是如此, 
不要被那些枯燥的理论锈蚀了头脑,让我们动手 
来做做,就会感到无穷的乐趣  

 
2 第1课  
 这一课很简单,用汇编来计算 2+3 等于多少 
1. 打开debug.exe程序: 
   开始菜单: "开始"→"运行(R)" 
   输入: debug 
   回车后打开 debug.exe 程序 
2. debug.exe 是一个DOS界面的程序, 
   输入: aa0 
   回车 
   输入: mov dx,2 
   回车 
   输入: add dx,3 
   回车 
   回车 
   输入: t=a0 
   回车 
   输入: t  
 

 
3 第1课(1)  
 3. 你必须按我所说的去做,当然如果你很厉害可以不那样做, 
 我给那些操作编个号: 
 步骤1: 输入: aa0 
 步骤2: 回车 
 步骤3: 输入: mov dx,2 
 步骤4: 回车 
 步骤5: 输入: add dx,3 
 步骤6: 回车 
 步骤7: 回车 
 步骤8: 输入: t=a0 
 步骤9: 回车 
 步骤10:输入: t 

 要注意步骤6和步骤7都是回车,就是连着回了两次车, 
 现在来看一下屏幕信息,你们对照一下,看对不对: 

 -aa0 
 0B08:00A0 mov dx,2 
 0B08:00A3 add dx,3 
 0B08:00A6 
 -t=a0 

 AX=0000 BX=0000 CX=0000 DX=0002 SP=FFEC BP=0000 SI=0000 DI=0000 
 DS=0B08 ES=0B08 SS=0B08 CS=0B08 IP=00A3 NV UP EI PL NZ NA PO NC 
 0B08:00A3 83C203      ADD    DX,+03 
 -t 

 AX=0000 BX=0000 CX=0000 DX=0005 SP=FFEC BP=0000 SI=0000 DI=0000 
 DS=0B08 ES=0B08 SS=0B08 CS=0B08 IP=00A6 NV UP EI PL NZ NA PO NC 
 0B08:00A6 6F          DB     6F 

 需要说明的是你显示的可能和我显示的有点区别, 
 我显示屏上的那些0B08,你的显示可能并不是这个,而是另外一个值,  
 
  

 
4 第1课(2)  
 4. 查看显示结果 
 我们都知道3+2=5,可这个5显示在什么地方呢? 
 在步骤10里, 输入: t 然后回车,可以看到显示一大堆东西, 
 你仔细找找显示的信息,找到DX这个东西,它是这样的: DX=0005 
 0005就是计算的结果,当然,它总是用4位数来表示的,所以前面 
 有三个0, 0005就是5,前面的三个0没用的,占个位置而已  
 
  

 
5 第1课(3)  
 5. 验证 
 当然一次不足以说明DX=0005中的0005就是计算结果,也许是一种巧合呢, 
 你可以试试其它的数字,看对不对  
 
  
6 第1课(4)  
 6. 进制: 
 "开始"→"运行",输入:debug,回车后打开 debug.exe 程序 
 然后按下面的步骤操作: 
   步骤1: 输入: aa0 
   步骤2: 回车 
   步骤3: 输入: mov dx,7 
   步骤4: 回车 
   步骤5: 输入: add dx,8 
   步骤6: 回车 
   步骤7: 回车 
   步骤8: 输入: t=a0 
   步骤9: 回车 
   步骤10:输入: t 
   步骤11: 回车 
 你猜猜计算结果会是多少呢?我现在是7+8,我想当然的认为是15, 
 那就是: DX=0015 ,可真的是这样吗,执行完步骤11后,看看步骤11 
 输出的信息,找到DX的值,非常奇怪的竟然是 DX=000F 
 000F是十六进制的,十六进制的F就是十进制的15,明白000F是十六 
 进制就行了  
 
  
 
7 第1课(4)  
 6. 进制: 
  "开始"→"运行",输入:debug,回车后打开 debug.exe 程序 
  然后按下面的步骤操作: 
   步骤1: 输入: aa0  
   步骤2: 回车  
   步骤3: 输入: mov dx,11  
   步骤4: 回车  
   步骤5: 输入: add dx,3 
   步骤6: 回车  
   步骤7: 回车  
   步骤8: 输入: t=a0  
   步骤9: 回车  
   步骤10:输入: t  
   步骤11: 回车  
 你猜猜计算结果会是多少呢?我现在是11+3,我想当然的认为是14, 
 不过有了前一个7+8的例子的经验,我知道要把它转换成16进制度, 
 14的16进制是E,所以应该显示: DX=000E 
 然而,我发现显示的竟然是: DX=0014 
 其实在这样的汇编程序里,所有的数字都是十六进制的, 
 上面的11是十六进制的11,3也是十六进制的3, 
 所以如果用十进制来算:十六进制的11用10进制来表示是17, 
 17+3=20,然后把20转换成十六进制是14, 
 当然也可以直接做十六进制的加法: 
      11 
    +  3 
  -------- 
      14 
 只要记住是逢16进1就行了,如十六进制的17+5: 
      17 
    +  5 
  -------- 
      1C  
 
  
 
 
9 debug.exe的命令符  
 看一下: 
   步骤1: 输入: aa0   
   步骤2: 回车   
   步骤3: 输入: mov dx,11   
   步骤4: 回车   
   步骤5: 输入: add dx,3  
   步骤6: 回车   
   步骤7: 回车   
   步骤8: 输入: t=a0   
   步骤9: 回车   
   步骤10:输入: t   
   步骤11: 回车  
上面的11个步骤里,哪些是汇编代码呢? 
汇编代码只有两行: 
   mov dx,11 
   add dx,3 
那aa0和t是作什么用的? 
aa0和t是debug.exe的两个命令符 
想必大家对DOS命令不陌生吧,比如: ping 127.0.0.1 
这就是一个大家再熟悉不过的ping命令符,它接了一个IP地址参数, 
当然你还可以接其他的参数, 如: ping 127.0.0.1 
a是debug.exe的命令符,a的作用就是进入汇编编辑状态,aa0后面的a0 
是a的参数,你可以写成a a0或者a   a0,和aa0是同一个意思, 
那这个参数a0是什么意思呢? 
当输入aa0回车后,看到下一行显示: 
0B08:00A0 
一个冒号隔开两个十六进制的数,前面那个可能不是0B08,不同的计算机 
可能不同,但后面的一定是00A0,00A0就是参数a0, 
你可以在打开debug.exe后输入: a100 ,就会看到: 
0B08:0100 

那t这个命令拿来作什么的? 
当执行完步骤7后,结束了汇编指令编辑,回到了debug.exe的命令符状态, 
编辑汇编指令就好比绘制工程蓝图,而 t 就是把工程蓝图交给施工队去施工, 
t=a0,那=a0是什么意思,t这个命令可以接参数,等号后面的a0就是参数, 
表示从地址a0开始执行, 那地址a0在哪里呢? 
0B08:00A0 
地址a0就是冒号后面的00A0, 
你看看 00A0 后面的是什么汇编指令: 
0B08:00A0 mov dx,11 
00A0后面的指令是 mov dx,11 
所以就从 mov dx,11开始执行, 
但是得明白 t 是单步执行的, 单步的意思是每次只执行一条汇编指令, 
所以输入 t=a0 并回车后,计算机就执行 mov dx,11 
执行完这条指令后就停止了, 
接着你再输入 t 然后回车, 计算机就执行下一条汇编指令 add dx,3 
就这么简单  
 
  

 
10 测试  
 上面学了 debug.exe 的两个命令符 a 和 t 
还学了两个汇编指令 mov 和 add 
这四个东西可以组合成几百几千、无数种用法,你们尽量多测试, 
测试不同的用法,也可以试些奇怪的用法,如 ta0 命令符...  
 
  

 
11 负数  
 1.运行下面汇编指令:   
   mov dx,8 
   add dx,-4 
  运行结果显示: DX=00004 
  这样写够简单了,没什么疑问吧

分享到:
评论

相关推荐

    汇编入门基础教程PDF

    《汇编入门基础教程PDF》是一本专门为初学者设计的汇编语言学习资源,它涵盖了汇编语言的基础概念、语法以及应用。汇编语言是一种低级编程语言,它与计算机硬件紧密相连,允许程序员直接控制计算机的硬件资源,因此...

    汇编入门秘诀

    ### 汇编入门秘诀知识点解析 #### 一、汇编语言概述 - **定义**:汇编语言是一种低级程序设计语言,它与特定类型的处理器架构紧密相关,可以直接访问和控制计算机硬件资源。 - **特点**:相较于高级语言如C语言、...

    汇编入门 编程入门 修改游戏源文件

    本文将从汇编入门、编程入门以及如何修改游戏源文件的角度出发,结合"进制的概念"和"6502指令系统"这两个关键知识点,为你展开一场深入的探索之旅。 首先,我们来探讨“进制的概念”。进制是表示数字的系统,最常见...

    汇编入门秘诀.pdf

    ### 汇编语言基础知识 #### 1.1 汇编语言的特点 汇编语言是一种低级程序设计语言,其特点在于它是一门面向机器的语言。每一条汇编指令通常对应于计算机硬件的一条机器指令。由于这种直接对应关系,使得汇编语言...

    Delphi 与汇编入门

    《Delphi 与汇编入门》是一本专为初学者设计的编程教程,它结合了高级的Delphi编程语言和底层的汇编语言知识。这本书的目的是帮助读者建立起从高级语言到低级语言的桥梁,深入理解程序执行的本质。虽然只翻译了一半...

    从0看汇编 --- 汇编入门

    【汇编语言基础】 汇编语言,作为计算机科学的基础,是一种低级编程语言,它与机器语言紧密相关,但比机器语言更易读、易理解。汇编语言使用符号(指令助记符)来代表机器代码,使得程序员可以更直观地编写程序。本...

    Coc__delphi.与汇编入门

    与汇编入门》是一本针对初学者的教程,旨在帮助新手了解并掌握Delphi编程语言以及汇编语言的基础知识。在IT领域,掌握这两种语言能够提升程序员对计算机底层机制的理解,从而更好地进行系统级编程和性能优化。 ...

    Linux下ARM汇编入门.pdf

    Linux下的ARM汇编入门主要涉及了ARM架构下的汇编语言编程基础知识,涵盖了汇编语言行结构、程序中的标号、分段、程序入口点定义、宏定义、常数定义以及一些常用的伪操作等内容。下面将详细展开这些知识点。 首先,...

    Windows_X64汇编入门.doc

    【Windows X64汇编入门】是一篇针对在Windows Vista 64位环境下进行汇编编程的初学者的教程。文章作者强调了四个关键点:(1)Windows环境,即程序设计是在Windows平台上,利用Windows API;(2)X64,指的是AMD64和...

    GCC内联汇编入门(中文版)

    GCC内联汇编入门 GCC内联汇编是GCC编译器提供的一种功能强大的特性,它允许开发者在C语言中嵌入汇编代码,从而提高程序的执行效率和性能。本文将详细介绍GCC内联汇编的使用方法和原理。 GCC内联汇编的基本概念 ...

    汇编入门教程和编译工具打包

    本资源包含"汇编入门教程"文本资料和两个重要的编译工具——MASM.EXE和LINK.EXE,为初学者提供了一个全面的汇编学习平台。 首先,让我们了解汇编语言的基本概念。汇编语言是一种符号化的机器语言,每一个指令都与...

    汇编入门精品教程.rar

    《汇编入门精品教程》是一本专为初学者设计的教育资源,采用CHM(Compiled HTML Help)格式,这种格式使得教程内容便于检索和阅读,并且支持直接复制代码,非常适合编程学习者快速查阅和实践。汇编语言是计算机科学...

    汇编入门四件套,包括四个exe程序,入门必经之路

    本文将详细介绍汇编入门必备的四个工具:debug.exe、link.exe、masm.exe以及汇编金手指.exe,它们是初学者踏入汇编殿堂的必经之路。 1. **debug.exe**:Debug是DOS时代的一个非常基础且强大的调试工具,它允许...

    GCC内联汇编入门[参照].pdf

    "GCC内联汇编入门" GCC内联汇编是一种强大的编程技术,可以帮助开发者在C语言中嵌入汇编代码,从而提高程序的执行效率和性能。GCC内联汇编可以分为基本内联汇编和扩展内联汇编两种形式,前者只允许使用汇编语法,后...

    GNU—ARM汇编入门

    《GNU ARM 汇编入门详解》 GNU ARM 汇编语言是针对ARM架构处理器的一种低级编程语言,主要用于编写高效、底层的程序。它允许程序员直接控制硬件资源,通常用于操作系统内核、设备驱动和其他对性能要求极高的应用...

    80x86汇编入门黑皮书

    "80x86汇编入门黑皮书"是针对初学者设计的一本教程,由清华大学出版社出版,旨在帮助读者快速掌握80x86架构下的汇编语言编程。 80x86系列是英特尔公司推出的一系列微处理器,从早期的8086到现代的 Pentium 和 Core ...

    汇编入门27个小程序

    在这个"汇编入门27个小程序"中,我们将通过一系列的实例来探讨汇编语言的基本概念、指令集以及实际应用。 首先,我们要明白,汇编语言的每条指令通常对应于计算机硬件的单一操作,如加载数据、存储数据、执行算术...

Global site tag (gtag.js) - Google Analytics