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。