学习笔记分享之汇编—2.汇编指令/语法
学习内容:汇编指令/语法:
-
拷贝源操作数到目标操作数:
mov 目标操作数,源操作数
-
源操作数可以是任意单元(r/m/sr/imm) (sr:Segment Register)
-
目标操作数可以是除了立即数之外的任意单元(r/m/sr)
-
操作数的宽度必须前后一致
-
源操作数和目标操作数不能同时为内存单元
-
-
加/减/与/或/异或:
🞕 add/sub/and/or/xor 目标操作数,源操作数
-
源操作数可以是r/m/imm
-
目标操作数可以是r/m
-
操作数的宽度除了源操作数是立即数的情况之外(即:立即数可以是任意位)必须前后一致
🞕 非:
- not r/m8 not r/m16 not r/m32
-
-
从指定内存中写入/读取数据:
mov dword ptr ds:[m],imm //写
mov r,dword ptr ds:[r] //读
ptr: Point 代表后面是一个指针 (指针即里面存的不是普通的值,而是个地址) 在8086中设置4个16位的段寄存器,用于管理4种段: ①数据段---ds(Data Segment):数据段寄存器 ②代码段---cs(Code Segment):代码段寄存器 ③堆栈段---ss(Stack Segment):堆栈段寄存器 ④附加段---es(Extra Segment):附加段寄存器 BYTE 字节 = 8(BIT) WORD 字 = 16(BIT) DWORD 双字 = 32(BIT) 1KB = 1024 BYTE
-
寻址公式
(LEA与MOV的区别在于MOV是取地址中的值,而LEA是取地址)
①[imm]形式
读取内存的值 向内存中写数据 读取内存编号 mov r,dword ptr ds:[m] mov dword ptr ds:[m],r/imm lea r,dword ptr ds:[m] ②[r]形式
读取内存的值 向内存中写数据 读取内存编号 mov r’,imm
mov r”,dword ptr ds:[r’]mov r,imm
mov dword ptr ds:[r],immlea r’,dword ptr ds:[r”]
mov r’,dword ptr ds:[r”]③[r+imm]形式
读取内存的值 向内存中写数据 读取内存编号 mov r’,imm
mov r”,dword ptr ds:[r’+imm]