来源(CSDN博客)

From: https://blog.csdn.net/kerecs/article/details/53503927

汇编语言(Assembly Language)笔记

2016年12月07日 11:55:25

阅读数:619

An introduction to Assembly Language:

It’s a low-level programming language for a computer or other programmable device. In contrast,it can compiling faster than most high-level programming languages. Each Assembly Language is specific to a particular computer architecture. A lesson teaches the syntax of the language.

1.寄存器:(Register)

16位CPU所有寄存器:

(1)4个数据寄存器(AX、BX、CX、DX)

(2)4个段寄存器(ES、CS、SS、DS)

(3)2个变址和指针寄存器(SI、DI)

(4)2个指针寄存器(SP、BP)

(5)1个指令指针寄存器(IP)

(6)1个标志寄存器(FLAGS)

32位CPU所有寄存器:

(1)同16位

(2)增加2个16位的段寄存器:FS、GS

2.寄存器用处:

CS : IP = 程序段 : 偏移量

SS : SP = 堆栈段 : 栈顶

SS : BP = 堆栈段 : 偏移量

DS : ALL = 数据段 : 数值、符号地址、指针寄存器的值等

ES : DI = 在进行串操作时,其目的地址的段寄存器规定为ES

小结:

(1)程序在CS段

(2)常用数据段用DS来指向,不常用数据段用ES、FS和GS等来指向。

(3)物理地址PA = 段地址 × 16 +偏移量(Offset)、有效地址EA = Effective Address(段内偏移)

3.寻址方式:(Addressing)

(1)立即寻址(immediate addressing):MOV 寄存器 立即数

(2)直接寻址(direct addressing):MOV 寄存器 段地址

(3)寄存器寻址(register addressing):MOV 寄存器/地址

(4)间接寻址(register indirect addressing):MOV 寄存器 [寄存器]

(5)相对寻址(register relative addressing):MOV 寄存器 [寄存器 + n] (n表示偏移值)

(6)基址变址寻址(based indexed addressing):MOV 寄存器 [数据寄存器 + 变址寄存器]

(7)相对基址变址寻址(relative based indexed addressing):MOV 寄存器 [数据寄存器 + 变址寄存器 + n] (n表示偏移值)

4.指令:(Instruction)

(1)数据传送指令:MOV、XCHG、LEA、LDS、LES、PUSH、POP、PUSHF、POPF、CBW、CWD、CWDE。

(2)算术指令:ADD、ADC、INC、SUB、SBB、DEC、CMP、MUL、DIV、DAA、DAS、AAA、AAS。

(3)逻辑指令:AND、OR、XOR、NOT、TEST、SHL、SAL、SHR、SAR、RCL、RCR、ROL、ROR。

(4)控制转移指令:JMP、Jcc、JCXZ、LOOP、LOOPZ、LOOPNZ、LOOPNE、CALL、RET、INT。

(5)串操作指令:MOVS、LODS、STOS、CMPS、SCAS。

(6)标志处理指令:CLC、STC、CLD、STD。

文章标签: 汇编语言

Link: http://www.asm32.net/article_details.aspx?id=7316