Assembly language 再读---续

前面已经写到了第三章的数据类型 的那一部分

接下来是一些关于伪指令和其他杂七杂八的东西

1. 当前地址计数器:   $

    常用于  计算数组以及字符串的长度,如:

.data
list db 12,34234,453,45,43,5
listp db ($-list)  ;代表的是数组元素所占内存空间的长度,也是一字为单元的数组的元素个数,
;如要求元素大小为字,或双字,以及更大的数据类型则需要除以 type list 或者直接除以元素大小

2. 等号伪指令(=)与EQU和它的"小兄弟" TEXTEQU

  区别:等号伪指令只能用于定义整数表达式,而EQU则有三种格式,如下

name equ expression 
name equ sybal
name equ <text>

但是EQU不能重复定义,=则可以,与EQU相似的是TEXTEQU,他同样有三种格式,但它与EQU最大的不同的是他可重定义

3.大端储存格式与小端储存格式

4. 整数的全零扩展与符号扩展

MOVZX (全零扩展)与MOVSX(符号扩展)

这边符号扩展提一下,在将小数传送给大数时,符号扩展会将小数的最高位复制到大数的高位

5. LAHF和SAHF

  LAHF:将EFLAGS的符号位,复制到AH中,

  SAHF:将AH中的内容复制到EFLAGS(RFLAGS),加载状态标志

6. XCHG  交换数据

  不使用所谓的立即数作为操作数

7.直接偏移量

  [变量名+常数]

8.inc 和dec 不影响进位标志位

9. offset

  offset: 伪指令,数据标号的偏移量,直接-偏移量操作数

    直接使用数据标号作为地址的方式称为直接寻址

    使用offset 将数据的地址返回给register,使用register作为寻址地址的方式称为间接寻址

10.PTR 

  PTR: 重写一个已经被声明过的 操作数的大小类型

  注: PTR只能与标准汇编类型一起使用

11.变址操作数

12.loop是先ecx-1,在进行判断的

猜你喜欢

转载自www.cnblogs.com/love-coding/p/11782918.html