汇编笔记
Posted NONE
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编笔记相关的知识,希望对你有一定的参考价值。
另一篇汇编学习笔记AT&T Assembly on Linux (linux下)
mov ax,bx bx到ax
读数据过程:cpu通过地址线发送地址a,控制线向存储器发送读命令,存储器对地址a进行读,通过数据线返回。
写数据过程:与读同理。
上述是cpu执行数据读写命令的过程,我们只需让cpu执行mov ax,[3],cpu便会自动执行上述过程。
对于汇编程序员来说,CPU中主要部件是寄存器。寄存器是CPU中程序员可以用指令读写的部件。程序员通过改写各种寄存器中的值来实现对CPU的控制。
绝大部分机器指令都是进行数据处理的指令,指令大致分为3类,读取、写入、运算。
在机器指令这一层,并不关心数据的值是多少,只关心在指令执行前数据位置。
指令执行前,数据可能的位置有:CPU内部、内存、端口。
三种表达方式:立即数、寄存器、段地址+偏移地址。
8086CPU寻址,为了以16位结构,达到20位寻址能力,采用 物理地址 = 段地址X16+偏移地址方式。
程序获得所需空间方法有两种,一是加载程序的时候为程序分配,再就是程序执行时向系统申请。
and指令,逻辑与指令:mov al,01100011B and al,01011001B
or指令,逻辑或指令
ASCII
[bx + idata]指明内存单元方式与C语言对比:
多种寻址方式:
只要在[..]中使用寄存器bp,段地址就在ss中。
寻址方式:
操作符X ptr可以指明要操作内存长度。word ptr或byte ptr。
例如 mov word ptr ds:[0], 1
div指令
mul乘法指令
dup操作符
转移指令分类:
操作符offset:
jcxz指令:
if((cx) == 0) { jmp short 标号}
call和ret
由此可见call和ret是相对应的,一个是将目前ip压栈并跳转,一个是出栈并跳转。
用于比较的条件转移指令:
对端口的读写不能用mov,push,pop等内存读写指令。端口的读写指令只有两条:in和out,分别用于从端口读数据和往端口写数据。
dword ptr []
待续。
以上是关于汇编笔记的主要内容,如果未能解决你的问题,请参考以下文章