目录
还没有更新完毕
学习前应该知道的汇编语言知识
计算机8086处理器通常有
ax bx cx dx 4个通用寄存器是16位寄存器
也可以拆分位2个八位的寄存器
al ah bl bh 等可以兼容以前的程序 l:low 低 低地址
h:heigh 高 高地址
注意:我们的计算机大多都是小端计算机,低位在下,高位在上
这里是如何判断计算机大小端http://t.csdn.cn/EPeMBhttp://t.csdn.cn/EPeMB我们的计算机是采用段加偏移的方式来进行寻址的来扩展cpu对内存的控制
CS:第一个字母c是code的缩写 代码段寄
DS:第一个之母是date的缩写 数据段寄
SS:第一个字母是stack的缩写是堆栈段寄存器
ES:是附加寄存器 与SS共同指向栈的顶
其中段寄存器*16+偏移地址就形成了新的地址,16进制左移一位
段寄存器中的短地址一定是16的倍数应为左移了一位
IP指令指针寄存器不可以被直接修改只可以通过junp指令进行跳转
CS:IP就是通过段加偏移确定指令位置
CS*16+IP得到指令的地址
add(加) substract(减)
register 寄存器 8/16
memory 内存 8/16
immediate 立即数 8/16
例如
JMP:
跳转的意思 跳转到某个指令
jMP ax
$:
当前汇编地址
jmp $
MOV:
MOV(双操作指令)讲数据从源地址传送到目标地址
MOV目的-——>除CS、IP以外的寄存器或存储器 (CS为段寄存器IP为指令指针)
MOV源 -——>寄存器、存储器、立即数(即确定的数字)
格式:
MOV 目的 源
ex:
mov ah al : 表示ah<——al等
注意 move 不可以直接从内存单元到段寄存器
sub、add:
格式:sub: reg/mem reg/mem/imm
用缩写代替只写一遍 reg 寄存器 mem内存 imm 立即数
最后的计算结果储存在reg/mem中是否进位在cf来看
add同理