码迷,mamicode.com
首页 > 编程语言 > 详细

汇编语言

时间:2020-06-13 00:33:38      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:语言   idt   机器   address   res   inf   code   翻译   地址   

段寄存器

8086 CPU有四个段寄存器:
CS, DS, SS, ES
段寄存器用来提供段地址

CS和IP

CS: 代码段寄存器
IP: 指令指针寄存器
修改CS,IP: jmp 段地址:偏移地址
仅修改IP的内容:
?? jmp 某一合法寄存器
?? jmp ax 用ax中的值修改IP


下面的3条指令执行后,cpu几次修改IP?都是在什么时候?最后IP中的值是多少?

mov ax,bx

sub ax,ax

jmp ax

答:一共修改四次

第一次:读取mov ax,bx之后

第二次:读取sub ax,ax之后

第三次:读取jmp ax之后

第四次:执行jmp ax修改IP

最后IP的值为0000H,因为最后ax中的值为0000H,所以IP中的值也为0000H


debug

-r: 查看寄存器内容
-r ax :修改ax的内容
-t : 执行指令
-d :查看内存中内容
-u: 查看内存中内容,将机器指令翻译成汇编指令
-e : 改写内存中内容(机器指令)
-a: 以汇编指令的格式在内存中写入一条机器指令

DS和[address]

DS寄存器通常用来存放要访问的数据的段地址
若要读区10000H单元内容到寄存器:

mov bx,1000H
mov ds,bx
mov al, [0]

不可以直接 mov ds,1000H
8086cpu 不支持直接将数据送入段寄存器

将al中数据送入内存单元10000H:

mov bx, 1000H
mov ds, bx
mov [0], al

8086cpu有16根数据线,一次性可以传一个字

mov

mov 段寄存器,寄存器 是可以的
但是 mov 寄存器, 段寄存器 可以吗? 答案是可以。

段寄存器SS: 存放栈顶的段地址
寄存器SP:存放栈顶的偏移地址
任意时刻,SS:SP指向栈顶元素

技术图片
mov ax, 1000H
mov ss,ax            // 不能直接mov数据到段寄存器
mov sp,0010H
push ax
push bx
push ds

汇编语言

标签:语言   idt   机器   address   res   inf   code   翻译   地址   

原文地址:https://www.cnblogs.com/FEIIEF/p/13111042.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!