码迷,mamicode.com
首页 > 其他好文 > 详细

汇编--普及

时间:2016-02-08 21:25:26      阅读:589      评论:0      收藏:0      [点我收藏+]

标签:

处理器(CPU),所能识别的就是一串二进制机器语言的代码

java 的抽象就是java虚拟机的抽象.

中文编码unicode   4个字节  ASCII   1个字节

 PTR 属性操作符,可以制定操作数的类型属性,优先于隐含的类型属性。

Bit意为""或"比特",是计算机运算的基础; 
Byte意为"字节",是计算机文件大小的基本计算单位; 
1byte=8bits,两者换算是1:8

al  是  8比特,8位,  有低四位 高四位.1字节

汇编语言程序的语句除  治理了难过 意外还可以有 位操作和宏指令组成.
MOV传送的是地址所指的内容,而LEA只是地址。0

LEA REG,SRC
link  连接  库文件 ,和 目标文件成为 可执行文件 exe 

 

MUL SRC

  1. SRC是字节操作数 即:AX←(AL)*(SRC)
  2. SRC是操作数    即:DX:AX←(AX)*(SRC)

受影响的标志位有:CF和OF(AF、PF、SF和ZF无定义)

如果乘积结果的高半部分等于零则CF=OF=0否则CF=OF=1

简化段定义  mov ax,@data  mov ds,ax

neg是求补指令

STOS 该指令把AL,AX,EAX中的值存入到由目的寄存器DI指向的附加段的某单元中,并根据控制标志位DF的值和数据类型修改目的变址寄存器的值。

LODS  该指令把源变址寄存器SI指向的数据段中某单元的内容送到AL,AX,EAX中,并根据控制标志位DF的值和数据类型修改源变址寄存器的值。

 

另一组是指针寄存器和变址寄存器,包括:
SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置
BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置
SI(Source Index):源变址寄存器,可用来存放相对于DS段之源变址指针
DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。
 
控制标志位为方向标志,(direction flag,DF)DF为1每次操作后变址寄存器SI和DI减小,为0则增大。
 
 
name  LABLE type  
 

移位指令

SHL 逻辑左移  logical

SAL 算术左移    arithmetic

SHR 逻辑右移

SAR 算术右移

  将段地址装入相应的段寄存器中

三、地址传送指令

  (1) 格式:LEA REG,MEM
  功能:将源操作数的有效地址传送到通用寄存器,操作数REG为16位或32位通用寄存器,源操作数为16位或32位存储器操作数。
  例 3.21
  LEA BX,BLOCK;将BLOCK的有效地址传送到BX中(16位)
  LEA EAX,/[EBX/];将EBX内容(有效地址)传送到EAX中(32位)

一、字符串处理指令

(1) lodsb、lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据DF标志增减SI

(2) stosb、stosw:把AL或AX中的数据装入ES:DI指向的存储单元,然后根据DF标志增减DI

(3) movsb、movsw:把DS:SI指向的存储单元中数据装入ES:DI指向的存储单元中,然后根据DF标志分别增减SI和DI

(4) scasb、scasw:把AL或AX中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI

(5) cmpsb、cmpsw:把DS:SI指向的存储单元中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI

(6) rep:重复其后的串操作指令。重复前先判断CX是否为0,为0就结束重复,否则CX减1,重复其后的串操作指令。主要用在MOVS和STOS前。一般不用在LODS前。

上述指令涉及的寄存器:段寄存器DS和ES、变址寄存器SI和DI、累加器AX、计数器CX
           涉及的标志位:DF、AF、CF、OF、PF、SF、ZF

 NOP  无操作指令 ,占一个字节的空间,调试的时候用

HLT     停机指令   ,

ESC     换码指令,

WAIT   使处理机处于空转状态.

LOCK   前缀    维持总线的锁存信号

BOUND   界限指令

ENTER   建立堆栈帧

LEAVE    释放堆栈帧

 

SEGMENT  伪操作

MODEL       伪操作 

状态标志  : 记录指令操作结果的标志, 共6位 :  OF , SF ,ZF ,AF ,PF ,CF  

控制标志  : 控制操作的标志,如DF位

 

段跨越前缀  ,如允许数据存放在除DS段以外的其他段中.

串处理指令的目的串必须用ES段

 



BCD码

BCD码   是用二进制的“数”来表示十进制的“数字”
因此,对于一个“十进制数字”(例如“6”),我们可以用一个“8位二进制数”来表示(即0000 0110 b),这称为非压缩的BCD码
当然,我们也可以用一个“4位的二进制数”来表示它(即 0110 b),这称为压缩的BCD码。 于是,十进制数“36”用非压缩的BCD码表示为“00000011 00000110”而用压缩的BCD码表示为“0011 0110”。
就是每4位表示一个数字咯~原本一个字节8位代表一个数字的
CF是进(借)位标志  值为1或0
sbb就是在sub的基础上再减去cf(借位标志) 带借位的减法
就好像
adc就是在add的基础上再加上cf(进位标志) 带进位的加法

 

汇编--普及

标签:

原文地址:http://www.cnblogs.com/zrui513/p/5080613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!