内存,寄存器与汇编语言 vol.2
段寄存器分为CS,IP与SS,ES
cs为代码段寄存器,ip为指令指针寄存器,同vol1 cs与ip组成cs:ip物理地址,16进制下cs乘16加上ip即物理地址。
每次读取一条指令的时候,ip自动加一,指向下一条指令地址。
jmp指令,cs ip读到该指令会进行ip跳转,跳到指定内存读取那个命令
形式:1.jmp 段地址:偏移地址
2.jmp ax 将ax值移动到ip cs不变
内存中字的储存
16位寄存器用来存8位高位字节8位低字节 ,例如124E ,放入地址为1,2 的单元里,12位于高位放在2,4E放在1单元
DS和【address】
mov add sub指令 三种数据类型 :寄存器(ax),直接数据,内存单元(【地址】)
mov不允许的形式:
mov ax,cl 位数不同
mov al ,300位数不同
mov ax ,A400H若数字开头为字母,需添加一个0 改正mov ax 0A400H
mov 1,2
mov 【地址】,【地址】
mov cs,ds 之间无电缆
mov cs,100 cs,ds不接受常数
正确例子:mov ax,1 mov cs,ax
add 除了ds不参与add其他与mov一样
栈
push ax表示将数据压入栈中
pop ax将数据弹出栈顶 两者都是以字为单位操作
你寄存器SS:SP指向栈顶元素,形式类似CS:IP
具体操作:
push一个元素入栈后,sp=sp-2(字为两个单元)移至上面一个储存单元,栈顶指针指向下一要储存的栈顶(此时为空)
栈顶从高地址移向低地址
pop操作相反
栈顶超界:
会改变栈空间外的数据,十分危险,需要自己注意
操作对象不可以是常数:push 1 ,pop 1
栈段:
初始空栈SS:SP指向栈底地址+2的单元,不在栈段中
栈的大小:push pop只会改变sp的大小不会改变ss,所以栈顶大小范围在0~FFFF也就是64kb
posted on 2018-10-18 23:12 batt1ebear 阅读(182) 评论(0) 收藏 举报
浙公网安备 33010602011771号