汇编简单知识点整理
1.汇编语言的AX,BX,CX,DX,分别表示什么 ?
汇编语言中的AX、BX、CX、DX是CPU内部的通用寄存器中的数据寄存器助记符。 数据寄存器用来存放参与运算的数据或是存储运算的结果。这四个数据寄存器都是16位的,实际由两个8位寄存器组合而成,这是为了灵活处理8位数据。每个寄存器可以将高、低8位分别作为独立的8位寄存器使用。其中的高8位用AH、BH、CH、DH表示,低8位用AL、BL、CL、DL表示。 这四个数据寄存器除了作为通用寄存器使用外,还有各自的特殊功能: AX 寄存器称为累加器,常用于存放算术、逻辑运算中的操作数或结果。另外,所有的I/O指令都要使用累加器与外设接口传递数据。 BX 寄存器称为基址寄存器,常用来存放访问内存时的地址。 CX 寄存器称为计数寄存器,在循环、串操作指令中用作计数器。 DX 寄存器称为数据寄存器,在寄存器间接寻址中的I/O指令中存放I/O端口的地址。 此外,在做双字长乘除法运算时,DX 与AX合起来存放一个双字长数(32位),其中DX存放高16位,AX存放低16位。
2.汇编语言中 CS,DS,SS,ES 的区别?
汇编语言中CS,DS,SS还有一个ES定义如下: CS(Code Segment):代码段寄存器; DS(Data Segment):数据段寄存器; SS(Stack Segment):堆栈段寄存器; ES(Extra Segment):附加段寄存器。 当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器 CS,DS,SS 来指向这些起始位置。通常是将DS固定,而根据需要修改CS。 而IP中保存的是所要执行的下一条指令的地址。
3.汇编语言MOV指令
在汇编语言中,MOV指令是数据传送指令,也是最基本的编程指令,用于将一个数据从源地址传送到目标地址(寄存器间的数据传送本质上也是一样的)。其特点是不破坏源地址单元的内容。 例如: MOV AX,2000H;将16位数据2000H传送到AX寄存器 MOV AL,20H;将8位数据20H传送到AL寄存器 MOV AX,BX;将BX寄存器的16位数据传送到AX寄存器 MOV AL,[2000H];将2000H单元的内容传送到AL寄存器 需要注意的是: (1)两个存储单元之间不能直接传送数据,即:MOV指令只允许一个操作数在存储器中。MOV [SI],[2000H];这是错误的 (2)MOV指令中立即数不能直接传送给段寄存器(CS、DS、SS、ES)和IP;段寄存器之间不能直接传送。MOV IP,2000 H ;这是错误的 (3)CS和IP不能作为目的操作数。MOV CS,AX ;这是错误的 (4)MOV指令中立即数不能作目标操作数。MOV 2000H,[SI] ;这是错误的。