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

寻址方式总结

寻址方式总结

关于汇编语言

Untitled

Untitled

一、Intel x86微处理器的寄存器结构

32位环境

Untitled

Untitled

可作为8位来用

可作为8位来用

64位环境

不可作为8位来用

不可作为8位来用

Untitled

Untitled

二、汇编语言基础

基本元素

Untitled

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

Untitled

Untitled

Untitled

Untitled

Untitled

Untitled

例子:加减法

Untitled

定义数据

Untitled

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

Untitled

符号常量

Untitled

Untitled

$:表示该行的地址

例子:加减法(实地址模式)

Untitled

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

数据传送指令

Untitled

Untitled

Untitled

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

mov指令

Untitled

Untitled

  • 不能由内存传输到内存:寄存器做中转
  • 不能直接修改cs ip

movzx和movsx指令

Untitled

Untitled

Untitled

xchg指令

Untitled

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

Untitled

加法和减法

INC和DEC

Untitled

ADD和SUB

Untitled

Untitled

ADD\SUB会影响标志位

Untitled

Untitled

标志位

Untitled

ZF=1 : 结果为0

ZF=0 : 结果为1

Untitled

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

Untitled

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

Untitled

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

Untitled

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

Untitled

OFFSET

Untitled

PTR操作符

Untitled

TYPE

Untitled

LENGTHOF

Untitled

SIZEOF

Untitled

共占多少个字节

间接寻址

Untitled

Untitled

Untitled

Untitled

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

Untitled

寄存器相对寻址的两种写法

mov al,[arryB + esi];     //这么写更直观
mov al,arryB[esi];        //这么写更像数组使用

JMP和Loop指令

Untitled

Untitled

Untitled

Untitled

Untitled

Untitled

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

Untitled

;如果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;

寻址方式总结:

Untitled

Untitled

posted @ 2025-09-15 17:03  Miaops  阅读(10)  评论(0)    收藏  举报