汇编语言是指直接工作在硬件之上的语言,但不是机器语言,机器语言是机器指令的集合。汇编语言是汇编指令的集合,汇编指令是便于记忆的机器指令的另一种书写方式,也就是说是机器指令的助记符。 汇编指令与数据在内存中存储都是二进制形式存储,因此CPU是无法直接区分一块内存是地址还是数据,但是CPU在与内存(这里指得所有芯片内存)进行数据传输时,将传输总线分成三大类:地址总线、数据总线、控制总线。这三类
原创
2011-08-18 17:50:40
1393阅读
前面我们用DEBUG调试命令时使用一些汇编指令,在用MASM进行编译时,达成的郊果完全不同的,特别需要注意 mov al,[0]这种用来读取DS:0的内存到AL中的指令在用MASM编译后生成的指令中是没有[]的,是单纯的一个值。 因此,可用[bx]来表示一个内存单元的偏移地址。 描述性符号(),用来表示一个内存单元或寄存器中的内容。 前面我们可以通过JMP指令实现指令的
原创
2011-08-29 17:47:47
398阅读
前面讲的汇编编辑有两种方式,一种是通过DEBUG的A命令,另一种是通过文本编辑器,这两种编辑器编辑好的命令是不一样的,前一种可以直接通过DEBUG的t命令进行直接执行,后一种还需要经过MASM编译后才能用DEBUG调试,这里有一点点不同,不同有两点,每一点在于[0]表示上,DEBUG中[0]表示偏移量,而MASM中只表十进制0 第二点,数值默认在DEBUG是十六进制,而MASM是十进制。 对同一
原创
2011-10-26 17:56:19
468阅读
前面我们写的程序都比较简单,通常在一个代码段就搞定了,所需要的空间也比较小。那么如果代码量大了怎么办呢?如何分配空间及如何规定不同的寄存器段也是非常重要的问题。通常程序需要内存空间有两种途径,一种是自己分配,在加载过程中指定内存空间,另一种是执行过程中向操作系统分配。第一种情况下对内存的管理,通常需要在程序中进行说明,在汇编语言中,对通常程序意义上的数据、代码、栈等按段分配内存,但这里按段并不表示
原创
2011-10-27 17:48:07
535阅读
前面已经讲述了几种不同的寻址方式,这些寻址方式总结出来,就在于偏移地址的表示方式,偏移地址可以用常量也可以用变量,或者常量加上变量。这些方式都是可以接收的。另外8086CPU还设置了两个独立的寄存器SI,DI用来辅助BX,这两个寄存器都是16位的,因此,不能分成两个8位,同时书写方式也同前面所述的一样,可以灵活如下: D:\Temp\NPP593~1.BIN\tmp>debu
原创
2011-11-01 15:53:18
592阅读
前面学习了汇编指令中也有一些转移指令,在汇编中,转移就是GOTO,它没有IF,SWITCH等高级语言中的一些特性。汇编中指令的执行是按照CS:IP进行单步执行的。转移指令可以只修改IP,也可以两者同时修改。转移指令分无条件转移如jmp,条件jcxz,循环loop,过程及中断等五种。首先学习一个新的操作符offset,这个是由编译器处理的伪指令,功能是取得标号的偏移地址。如start: mov ax
原创
2011-11-21 17:35:26
556阅读
前面说到转移指令,通常转移到另外一个指令之后,继续接着执行。但是假如说我要转到另外的指令执行一段后然后再想回到跳转之间的指令该如何实现。汇编已经考虑到这个问题,设置了两个指令,CALL RET指令,它们都是转移指令,同前面jmp不同,它转移时除了修改CS和IP之外,还要将CS/IP入栈保存起来。以便后面继续使用。正因为有这两个指令,所以才有了子程序的概念。我们可以想像有一段代码,是比较独立功能的。
原创
2011-11-22 11:04:33
687阅读
前面学习了标志寄存器,标志寄存器针对一些特定操作结果给予了特定意义,显然我们可以想到利用这些特性,来进行程序判断和进位加减等。8086CPU设置了一些相关指令,这些指令可以进行带位操作,所谓带位操作就是对特定标志位进行判断。下面将讲述以下几种操作指令: 【1】adc 带进位加法指令,利用了CF位上记录的进位值,因此适用于无符号数加减。指令格式 adc 操作对象1 操作对象2 比喻 adc ax,
原创
2011-11-28 17:24:49
896阅读
从生活经验来看,一件具有有自主处理能力的设备,通常都具有一种能力,就是能够针对外部或者内部产生的一些非正常、异常的信息进行反应的能力。CPU作为人设计的机器的大脑,它也具有这样的能力,这种能为就是中断处理。中断处理处理的是中断信息,中断处理的过程是按照指定的中断信息执行指定的中断处理程序。学习中断需要了解的概念比较多,这里所描述的中断信息的概念,是为了理解上的方便采用的一种逻辑上的说法,它实际上是
原创
2011-12-04 11:48:30
692阅读
CPU从机器LEVEL上就是一个指令执行机器,它在时钟触发模式不停的处理这些指令。这些指令代表了特定的意义,这些意义是由编写指令的人来规定的。CPU是不知道具体含义的。CPU最基本的指令就是运算指令,人们可以其它一些指令将一些看似运算代表的意义变成其它含义,如前面所说的端口,我们可以从端口读取一个数据并将之显示在屏幕的指定位置。在这个处理过程中,CPU只是从一个端口读进一个数据并将之放在一块特定内
原创
2012-01-09 10:39:26
649阅读
汇编中对内存地址提出了字概念,我们前面说过一个字节是8位,一个字是两个字节,正好是16位,对8086CPU来说,一个寄存器也是16位,正好就是一个字,因此内存也可以对应的划分成按字存储,即存放一个字型数据(16位),由两个连续地址单元组成的内存单元称之为字单元。 CPU要读写一个内存单元的数据,不是地址时,需要先知道内存单元地址,这时候就不用CS:IP方式,而是借用DS寄存器和mov 寄存
原创
2011-08-25 16:54:26
540阅读
前面都是通过DEBUG中写入一些汇编命令实现特定的操作要求,实际开发过程中,我们不可能这样一步一步的编写,通常都是编写好一段汇编源程序,然后对这个源程序进行编译链接,编译链接完了之后得到一个可执行程序,操作系统装载可执行程序进行运行,得到想要的结果。 以上是一种标准的软件生成、运行过程。通常现代操作系统中都提供了一些辅助工具来帮助程序员书写程序,如开发汇编程序,程序员可以使用编辑器进行编写
原创
2011-08-26 17:44:29
795阅读
前面学习了通用寄存器和段寄存器,这些寄存器设计在很多种类架构机器中都是类似的,可能名字不一样,但是它们的功能都是存放数据供ALU使用。还有一种寄存器叫标志寄存器,它不是干这活的,它是一个监工。它是专门用来对指令的处理结果进行记录分析的。这些分析反映在这个寄存器的特定位上,这些特定位是按二进制进行分配的。因此,这些特定位的不同值反映出前面指令处理的结果。因此,通过学习这些特定位,在编程时可以通过判断
原创
2011-11-25 16:41:00
530阅读
前面讲到CPU通过三种总线与各类设备打交道,其中存储器是和CPU的地址、数据及控制总线相连,CPU将其看作一个逻辑内存空间。采用统一的编址方式。但是存储器芯片除了硬盘、内存条之外,还有一些接口卡如显卡、网卡等,这些设备上是自有内部芯片和内部寄存器,这些寄存器从CPU来看也是存储器的概念。在不同的系统架构中,如何确定这些寄存器,也就是如何对它们编址是不一样,在X86系统,引入一个新的编址空间叫端口,
原创
2012-01-04 15:17:27
819阅读
一,如何理解编码系统? 编码系统是一种表示系统,是对客观世界的一种表示二,如何理解计算机? 机器是由很多部件组成的,通过电进行驱动,所有它需要指令(机器指令0和1组成)来告诉它这个部分怎么做,那个部分怎么做。cpu作为中央处理器,可以将一串二进制数字转换成高低电平来驱动计算机运行三,如何理解汇编语言? 严谨定义: 用指令的助记符,符号地址,标号,伪指令等符号书写的语言成为汇编语言。用这
转载
2023-07-29 21:48:39
66阅读
第一章基本概念 1.1 简单介绍 本书着重讲述MS-Windows平台上IA-32(Intel Architecture 32bit,英特尔32位体系架构)兼容微处理器的汇编语言程序设计,可以使用Intel或AMD的32位/64位处理器运行本所有例子...
转载
2016-08-02 15:30:00
183阅读
2评论
第一章基本概念1.1 简单介绍 本书着重讲述MS-Windows平台上IA-32(Intel Architectu
转载
2022-12-12 20:17:47
124阅读
基本控制结构 字符与字符串的输入/输出方法 DOS系统调用INT 21H提供了字符及字符串的I/O功能,例如: 01H:从键盘读入一个字符 02H:显示一个字符 09H:显示一个字符串 0AH:
翻译
精选
2009-06-13 23:14:06
1692阅读
一、基本概念概 念:是由助记符、符号地址、标号等书写程序的语言。目 的:汇编语言源程序通过加工翻译(又叫做汇编)转换成机器语言。实 质: 汇编程序是一种系统软件。IBMPC系统配置了两种汇编程序:ASM小汇编 、MASM宏汇编(主流)。二、基本语法1.字符集 2.标识符&
机器语言:纯粹的机器代码 。汇编语言:8086汇编、Win32汇编、.NET的汇编 高级语言: Basic、Pascal、Object Pascal、C、C++、C#、Java、ASP、ASP.NET、Perl、PHP、SQL、FoRTRAN 等等 。Visual Basic、Visual Basic.NET、Delphi、Visual C++、C++ Builder、C# Builder、Vis
转载
2023-06-08 10:50:57
374阅读