Java教程

汇编语言Assembly Language.asm--8086

本文主要是介绍汇编语言Assembly Language.asm--8086,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

汇编语言Assembly Language.asm--8086

 

 

 

 

寻址方式*4

寻址方式

操作数

寻址

立即数寻址

操作数就是立即数

--

寄存器寻址

操作数在寄存器中

用寄存器名寻址

内存寻址

操作数在内存中

用物理地址寻址

I/O端口寻址

操作数在IO设备中

立即数作为地址
地址存入寄存器

内存寻址*5

寻址方式

有效地址EA

默认段

直接寻址

EA=IMME

默认段DS

寄存器间接寻址

EA=(REG)

BX/SI/DI默认DS,BP默认SS

寄存器相对间接寻址

EA=(REG)+IMME

同上

基址变址寻址

EA=(基REG)+(变REG)

BX默认DS,BP默认SS

相对基址变址寄存器

EA=(基REG)+(变REG)+IMME

同上

IMME作为地址时,可以8位或16位;物理地址PA=SA*10H+EA;

思维导图

寄存器命名的演化

处理器

年份

寄存器名称演化

8008-世界上第一个8位微处理器

1972年

A B C D E H L

8086-16位微处理器

1979年

AX BX CX DX AL BL CL DL AH BH CH DH

80386-x86系列中的第一个32位处理器

1985年

EAX AX AH AL

x86-64

2003年

RAX EAX AX AH AL

x86-64

NOW

R15(64) R15D(32) R15W(16) R15B(8)

  • A=accumulator=累加器,B=base基础,C=Count=计数,D=Data=数据,
  • X表示H和L的结合,表示完整的16位,只是随便挑了一个字母X,没有实际含义;
  • H=high=高8位,L=low=低8位,E=extend=扩展,R=register=寄存器
  • D=double word=双字(32位),W=word=字(16位),B=byte=字节(8位)

物理地址=段地址*16+偏移地址

默认组合

SS:SP

栈段地址+栈指针

SS:BP

栈段地址+基指针

DS:SI

数据段地址+源变址

ES:DI

附加段地址+目标变址

CS:IP

代码段地址+指令指针

DS:BX

数据段地址+基数

寄存器*14

通用*4(ABCD)

Accumulate+Base+Count+Data

ACD(数据)B(地址)

段*4(CDES)

Code+Data+Extra+Stack

CDES(地址)

指针*3(SBI)

Stack+Base+Instruction

SBI(地址)

变址*2(SD)

Source+Destination

SD(地址)

标志*1 Flag/PSW

program status word

Flag(状态)

 

指令分类

一、数据传送指令

MOV,PUSH,POP,XCHG,IN,OUT,XLAT,LEA,LDS,LES,LAHF,SAHF,PUSHF,POPF

二、算术指令

ADD,ADC,INC,SUB,SBB,DEC,NEG,CMP,MUL,IMUL,DIV,IDIV,CBW,CWD

三、逻辑指令

AND,OR,XOR,TEST,NOT,SHL/SHR,SAL/SAR,ROL/ROR,RCL/RCR

四、串处理指令

MOVS,LODS,STOS,CMPS,SCAS

五、控制转移指令

JMP,...,LOOP,LOOPZ/LOOPE,LOOPNZ/LOOPNE,CALL,RET,INT,INTO,IRET

六、处理机控制指令

 

 

语言组成

①标号

表示指令地址或变量地址

start:mov ax,bx

②助记符

机器指令的符号化表示jmp

③操作数

add ax,250H

④注释

单行注释;多行注释comment

堆栈  heap+stack

堆=heap

栈=stack

人为申请开辟malloc

系统自动分配

手动释放free

编译器自动释放

空间较大

空间较小,栈的大小是1M

速度比较慢

速度较快

不连续的空间,产生碎片

连续的空间,不会产生碎片

链表数据结构存储空闲内存地址

栈是机器系统提供的数据结构,

专门的寄存器存储地址

堆一般是在头部用一个字节存放堆的大小,堆中的具体内容是人为安排

栈在函数调用时,函数调用语句的下一条可执行语句的地址第一个进栈,然后函数的各个参数进栈,其中静态变量是不入栈的

 

这篇关于汇编语言Assembly Language.asm--8086的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!