西电微机原理-第三章 Intel处理器指令系统及汇编语言(1)
目录

寻址方式总结
关于汇编语言


一、Intel x86微处理器的寄存器结构
32位环境



可作为8位来用
64位环境

不可作为8位来用


二、汇编语言基础
基本元素

加0是为了区别常量与变量(变量不能以0开头)






例子:加减法

定义数据

DW=WORD是16位,不要误认为是double word(32位)

符号常量


$:表示该行的地址
例子:加减法(实地址模式)

三、数据传送、寻址和算术运算
数据传送指令



注意 mov al,var1 等价于 mov al,[var1] 是用var1的值来寻址,而不是直接把var1这个偏移赋值给al,所以是直接寻址,而不是立即寻址
mov指令


- 不能由内存传输到内存:寄存器做中转
- 不能直接修改cs ip
movzx和movsx指令



xchg指令

绿色框中是三种等价形式,其中异或方法是原地交换

加法和减法
INC和DEC

ADD和SUB


ADD\SUB会影响标志位


标志位

ZF=1 : 结果为0
ZF=0 : 结果为1

最高位有进位 CF=1【等价于无符号数溢出】

OF=1【等价于有符号数溢出】

所以在考虑溢出时,如果是无符号数,就看CF,是有符号数,就看OF

数据相关的操作符和伪指令

OFFSET

PTR操作符

TYPE

LENGTHOF

SIZEOF

共占多少个字节
间接寻址




@ 等价于 OFFSET ,不过前者用于段,后者用于一般的标号,两个都是立即寻址

寄存器相对寻址的两种写法
mov al,[arryB + esi]; //这么写更直观
mov al,arryB[esi]; //这么写更像数组使用
JMP和Loop指令






TYPE intarray 表示intarray元素的字节数,此处=2【这么写更具有复用性】

;如果SOUCE使用BYTE WORD定义的,可以改为逐字复制
mov esi,0;
mov ecx,LENGTH Source;
L1:
mov ax,source[esi];
mov target[esi],ax;
add esi,TYPE Source;
loop L1;
寻址方式总结:



浙公网安备 33010602011771号