汇编初学(第一部分:内存操作)

——《汇编语言第三版》 王爽


[toc]

一. 问题提出

  1. 存储在内存中的都是二进制数,如何区分指令,数据和栈空间?

二. 基础知识

1. CS 和 IP

1.1 定义

CS是代码段寄存器,IP是指令指针寄存器。

1.2 用法

如果需要到20003H处寻找指令,即CS:IP = 2000:0003。
可以

jmp 2000:3,

此句执行后,CS = 2000H,IP=0003H,CPU将从20003H处读取指令。
物理地址:20003H = 2000H(段地址) × 16 + 0003H(偏移地址)。(此处之所以×16是因为在8086CPU合成地址的规定,并不具备普遍意义。)

只要符合“段地址×规定倍率 + 偏移地址”格式得到的最终物理地址均有效,允许出现段地址与偏移地址不相同但是最终物理地址相同的情况

1.3 注意事项

  • 8086CPU的工作过程可以描述如下:
  1. 从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲区;
  2. IP=IP+所读取的指令的长度,从而指向下一条指令;
  3. 执行指令。转到步骤1,重复这个过程。
  • 在8086CPU中,无法直接对CS及IP寄存器进行操作,而通过“jmp 段地址:偏移地址”的指令进行对CS和IP寄存器的修改。

2. DS 和 [Adress]

2.1 定义

CPU要读写一个内存单元的时候,必须先给出这个内存单元的地址,在8086中,内存地址有段地址和偏移地址组成。

上段所说的指向数据内存的段地址寄存器为DS

2.2 用法

假如我们需要访问10000H单元的内容,可以用如下的程序段进行:

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

上述的3条指令将10000H(1000:0)中的数据读到al。

2.3 注意事项

完成上述指令目标时,为什么不能用下面的指令实现?

mov ds,1000H

即思考为什么不能将数值直接送入DS寄存器?
关于这一点,这是因为8086的CPU硬件设计部分的原因,感兴趣可以自己进行寻找答案。

3. SS 和 SP

3.1 定义

8086CPU用SS和SP指示栈顶的位置,SS为段地址,SP为偏移地址。常与push和pop指令连在一起用。
在这使用的过程中,假如我们定义的栈空间为指定大小x,栈空间的其实地址为a。
那么可能出现栈满时执行push或着栈空的时候执行pop带来的“栈顶超界”问题,8086并没有提供有关记录栈顶空间的寄存器,需要编程者自己注意。

3.2 用法

mov ax,1000H
mov ss,ax
mov sp,0010H
push ax
push bx
push ds

上述指令执行了以下几个操作

  1. 将1000H放入AX寄存器
  2. 将栈段地址寄存器赋值1000H
  3. 将栈偏移地址寄存器赋值0010H
  4. 将AX寄存器的值压入栈
  5. 将BX寄存器的值压入栈
  6. 将DS寄存器的值压入栈

3.3 注意事项

  1. 在汇编操作的过程中,8086CPU并不支持直接将值赋予SS寄存器,但是可以直接将值赋予SP寄存器
  2. 在入栈时,地址是从高向低增长。

三. 思考

  1. 内存里是二进制数,并不具备所谓的数据、命令、栈空间的区别,全都是一个个的二进制数;
  2. 当CS、IP指向的是命令,DS、[Adress]指向的是数据,SS、SP指向栈空间的栈顶数据。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,179评论 8 114
  • 王爽汇编全书知识点大纲 第一章 基础知识 机器语言 汇编语言的产生 汇编语言的组成 存储器 cpu对存储器的读写 ...
    2c3ba901516f阅读 2,417评论 0 1
  • 编程语言的发展 机器语言由0和1组成 汇编语言(Assembly Language)用符号代替了0和1,比机器语言...
    阿凡提说AI阅读 4,009评论 0 15
  • 总决赛第四场对于双方都是考验。对于勇士的考验在于,他们是否真有如此出色的控制力,让他们能够对抗人性。领先,大比分领...
    西科南麦阅读 273评论 3 2
  • 小雨淅沥沥的下着,夜渐渐地深了,此刻躺在床上,内心十分平静,似乎是恬静有深邃的夜把我身上白天所有的一切浮躁,暴躁都...
    楠方有乔阅读 217评论 0 2