汇编
文章平均质量分 76
老鸟一枚
广交天下友!
展开
-
汇编语言学习笔记(二)——8086汇编寻址方式举例和说明
汇编代码是由两部分组成:操作码(mov)+操作数,既然有操作数的参与,那么对于操作数必然需要存储。在计算机中,对于操作数的存取至少有两种方式:寄存器和存储器,那么相对而言就产生了各种寻找操作数的方式,本文一一介绍 1、立即寻址方式操作数就包含在指令代码中,它作为指令的一部分跟在操作码后放在代码段(CS)中。这种操作数被称作立即数,立即数可以是8位的也可以是16位的。如果立即原创 2012-02-06 21:17:33 · 1288 阅读 · 0 评论 -
汇编语言指令学习之跳转指令JMP和循环指令LOOP
在汇编指令中跳转指令分为两种,一种是无条件跳转指令,一种是有条件跳转指令。对于前者无条件跳转指令有点类似于高级语言C中的goto语句,goto标志符,无跳转指令的格式也是类似JMP 标号;对于有条件跳转指令通常都是根据FLAG寄存器的相关状态值SF,OF,AF,PF,CF是否被设置为1或者是0来进行跳转的选择,这个就可以实现相关的分支语句。类似于高级语言中的if等。(1)无条件跳转指令原创 2012-02-19 14:12:12 · 12371 阅读 · 1 评论 -
汇编语言程序设计(三)-基础语法知识
汇编语言的伪指令 汇编语言中有3种基本语句:指令语句、伪指令语句和宏指令语句。 指令语句是上一章介绍的指令,它们经过汇编之后产生可供计算机硬件执行的机器目标代码,所以这种语句又称为执行语句;伪指令语句是一种说明(指示)性语句,仅仅在汇编过程中告诉汇编程序应如何汇编,例如告诉汇编程序已写出的汇编评议程序有几个段,段的名称是什么?是否采用过程?汇编到某处是否需要留出存储空间?应留多大?是转载 2012-02-19 16:40:17 · 1388 阅读 · 0 评论 -
汇编语言程序设计(四)-基本语法
汇编语言的源程序中语句的结构由4部分组成,每个部分称为项,其语句格式如下: [名字] 操作码 [操作数] [注释] 上述4部分中带方括号的项为任选项,操作码部分是必需项。各项之间常用冒号“:”、逗号“,”、分号“;”和空格作为分界符分隔开来。下面分别说明组成汇编语句的4个部分的含义。 1.名字 名字是用户为汇编语句所定义的具有特定意义的字符序列,它表示转载 2012-02-19 16:41:26 · 1397 阅读 · 1 评论 -
8086汇编语言程序设计(二)
各种机器的汇编语言,其语法规则不尽相同,但基本语法结构形式类似。现以8086/8088汇编语言为例加以具体讨论。 4.2.1 汇编语言的数据与表达式 1.汇编语言的数据 数据是汇编语言中操作数的基本组成成分,汇编语言能识别的数据有常数、变量和标号。 (1)常数 常数是指那些在汇编过程中已经有确定数值的量,它主要用作指令语句中的立即操作数、变址寻址和基址加变址中的位移量原创 2012-02-19 16:39:10 · 3249 阅读 · 0 评论 -
汇编语言程序设计之伪指令LABEL和THIS
首先谈一下自己的一些理解:从高级语言的基本说一下在高级语言中,我们有时候对段存储空间进行了初始化的属性设置,例如存储空间的初始访问是int,每访问一次IP = IP+4,现在想以字节进行访问(char),那么就需要进行强制类型转换,但是这种转换只对单次的操作有用。int a[10]char *p = (char*)a;如果后面需要时候的时候,需要再次进行转换。 在汇编语言编转载 2012-02-19 16:29:00 · 2496 阅读 · 2 评论 -
汇编语言学习之乘除法指令
在前面一节谈到,在汇编中对于加法和减法指令是没有所谓的有符号数加法和有符号数减法,统一通过补码进行运算,然后再根据标识寄存器的相关标识位进行判断,来辨别运算结果是否正确,主要是以OF,SF和CF的对比来判断。但是乘法指令和除法指令区分了相关的有符号操作和无符号操作,因为在运算的结果中需要进行符号位的扩展。乘法指令和除法指令都分为字节和字的操作,如果是两个8bit位的操作数,则结果存放在AX原创 2012-02-18 13:29:35 · 4814 阅读 · 0 评论 -
汇编语言指令学习之逻辑运算
汇编语言的逻辑运算也是我们通常所说的:非、与、或、异或等(1)否操作指令指令格式如下:NOT OPRD操作后的结果:OPRD各位取反,操作数可以是通用寄存器,可以是存储单元,但是不能是立即数对标志位没有影响。 (2)逻辑与操作(and)指令格式如下:AND OPRD1,OPRD2操作的结果如下:按位进行“与”操作,执行指令后,CF = 0,OF = 0,标志原创 2012-02-18 13:58:04 · 2181 阅读 · 0 评论 -
汇编指令学习之移位操作
汇编指令中的移位操作分为算术移位和逻辑移位一般在进行左移操作的时候,算术移位和逻辑移位的处理过程都比较简单:移除左边的最高位,最低位补零但是在进行右移操作的时候,算术移位移除右边的数字然后左边的最高位进行符号扩展,不过逻辑移位就是补零,则个需要注意一点。对于需要进行左移和右移的操作,一般都是需要指定移动位数M,如果M=1则可以直接以立即数给出,如果移位超过1则需要把移位放在CL中。原创 2012-02-18 13:36:52 · 1904 阅读 · 0 评论 -
汇编语言学习指令——加减运算指令
1、加法指令ADD格式:ADD OPRD1,OPRD2(OPRD1) = (OPRD1)+(OPRD2)例如:MOV AX,7896H; AX=7896H即AH = 78H, AL=96H;各个标志寄存位保持不变ADD AL,AH ;AL=0EH,AH = 78H,即AX = 780EH(0111100000001110)此时如果FLAG寄存器的值分别为CF =原创 2012-02-14 21:59:03 · 8543 阅读 · 0 评论 -
汇编代码中有符号数和无符号数和相关的指令操作
一、只有一个标准!在汇编语言层面,声明变量的时候,没有 signed 和 unsignde 之分,汇编器统统,将你输入的整数字面量当作有符号数处理成补码存入到计算机中,只有这一个标准!汇编器不会区分有符号还是无符号然后用两个标准来处理,它统统当作有符号的!并且统统汇编成补码!也就是说,db -20 汇编后为:EC ,而 db 236 汇编后也为 EC 。这里有一个小问题,思考深入的朋友转载 2012-02-15 22:45:59 · 3295 阅读 · 1 评论 -
汇编语言学习之伪指令
段定义伪指令 段定义伪指令是表示一个段开始和结束的命令,80x86有两种段定义的方式:完整段定义和简化段定义,分别使用不同的段定义伪指令来表示各种段。 1 完整的段定义伪指令 完整段定义伪指令的格式如下: 段名 SEGMENT . . . 段名 ENDS 段名由用户命名。对于数据段、附加段和堆栈段来说,段内一般转载 2012-02-21 12:40:55 · 3692 阅读 · 1 评论 -
汇编语言初识(一)
刚开始学习汇编语言,对相关的所学知识做个总结,希望对自己可以有所提高。1、在计算机中数的表示方式因为计算机中只能存储二进制数,所以一般都是通过二进制直接进行存储,但是为了方便阅读和程序员的编码简单化,就出现了八进制、十进制、十六进制,一般在汇编的学习过程中以二、十、十六进制为主。四种数据的表示形式符号是:B(二进制)、O(八进制),D(十进制),H(十六进制)二进制、八进制、十六进原创 2010-12-25 01:02:00 · 488 阅读 · 0 评论 -
汇编指令之数据传送指令续集(三)
4、堆栈指令在8086/8088系统中,堆栈实际是一段随机访问RAM区域。称为栈底的一端地址较大,称为栈顶的一端地址较小。堆栈的段值在堆栈寄存器SS中堆栈的指针寄存器SP始终指向栈顶堆栈是以“后进先出”方式工作堆栈的存取必须以字为单位(16bit = 2Btye)堆栈的指令分为如下两种:(1)进栈指令PUSH格式如下:PUSH SRC(源操作数)该指令把源操原创 2012-02-08 22:57:50 · 758 阅读 · 0 评论 -
8086/8088的指令系统(三)——数据传送指令
大多数指令既可以处理字数据,也可以处理字节数据。算术运算和逻辑运算不局限于寄存器,存储器操作数也可以直接参加算术逻辑运算。指令系统分为如下六个功能组:(1)数据传送(2)算术运算(3)逻辑运算(4)串操作(5)程序控制(6)处理器控制指令的一般格式分为四个部分[标号:] 指令助记符 [操作数1][,操作数2][;注释]指令是否带有操作数完全取决于指令原创 2012-02-06 22:08:14 · 1826 阅读 · 0 评论 -
汇编语言程序设计概述
程序设计语言是实现人机交换信息(对话)的最基本工具,可分为机器语言、汇编语言和高级语言。本章重占介绍汇编语言。 (1)汇编语言是一种面向机器的程序设计语言,其基本内容是机器语言的符合化描述; (2)通常汇编语言的执行语句与机器语言的执行指令是一一对应的; (3)汇编语言允许程序直接使用寄存器,标志等微处理器芯片内部的特性; (4)同高级语言程序相比,与其等效的汇编语言执行速原创 2012-02-19 16:36:42 · 1370 阅读 · 1 评论