[042][汇编语言]检测点10.2 10.3 10.4 10.5(1)(2)

8086CPU 读取、指令过程复习

8086CPU 读取执行指令过程的简要描述
1、从CS:IP 指向的内存单元读取指令,读取的指令进入指令缓冲器
2、IP寄存器内的值自动增加,指向下一条指令
3、执行指令,并转到步骤1

  • 简而言之就是,先读取、再IP值自动增加、而后执行

检测点10.2

检测点10.2.png

解析

  • 走到call s 时,IP值已经完成自动增加,此时IP=6
  • 执行call s之后,IP=6 被压入栈
  • 执行pop ax,使得的 (ax)=6

答案

  • AX的值为 0006H

检测点10.3

检测点10.3.png

解析

  • call far ptr s 等价于
push CS
push IP
jmp far ptr s

CS=1000H IP=8H
被依次压入栈
  • 跳转到标号s处开始依次执行
  • 最终AX=1010H

答案

  • AX的值为 1010H

检测点10.4

检测点10.4.png

解析

  • call ax 等价于
push IP
jmp ax

IP=5 被压入栈
(IP)=(ax)=0006H
程序跳转到CS:IP=1000:0006 处开始执行
  • CS:IP=1000:0006mov bp sp
(bp)=(sp)
  • add ax,[bp]
bp 默认使用的 SS 作为段地址
[bp] 等价于 SS:[bp],现在指向 栈顶

add ax,[bp] 取出 栈顶内容0005H 与 (ax) 相加

AX      0006H
[bp]    0005H
----------------
        000BH

十进制的 十一
十六进制的 B

答案

  • AX的值为 000BH

检测点 10.5 (1)

检测点10.5 (1).png
  • call word ptr ds:[0eH]
等价于
  push IP
  jmp word ptr ds:[0eH]

等价于
  push IP
  (IP)=(ds:[0eH])
  再跳转到 新的 CS:IP 处


push IP  
此时 CS:IP 指向从上往下第一条 inc ax
将这个IP称之为 【IP-旧】 压入栈

  (IP)=(ds:[0eH])
要用内存单元地址里的内容修改IP的值,
此时 DS==SS,ds:[0eH == ss:[0eh] 正好就是栈顶,
而栈顶正好存着 【IP-旧】
这恰恰造成了不动的结果
IP-新 = IP-旧
程序按照CS:IP去执行,
即将执行的仍旧是从上往下的第一条 inc ax

最终,经过 三次 inc ax,ax的值变成 0003H
  • [0eH]中的0eH怎么来的?
mov sp,16
16是十进制数 十六
写成十六进制就是 10H
本质上就是  mov sp,10H

随着后面入栈操作 PUSH IP
使得 (SP)=(SP)-2

16-2=14 写成十六进制就是 0EH

答案

  • AX的值为 0003H

检测点 10.5 (2)

检测点10.5 (2).png

解析

  • 我的草稿
    检测点 10.5 (2)
  • dw 8 dup(0) 使得 data段存着 16个字节的 00H
  • mov sp,16 等价于mov sp,10H
  • mov word ptr ss:[0], offset s
offset s
取出 标号s 所在的 偏移地址,这里假设为 X

mov word ptr ss:[0], offset s
等价于
   (ss:[0]) = X

ss 指向 data 段 
在data段的 00-01 内存单元放入 【偏移地址  X】

  • mov ss:[2],cs
在 data段的02-03内存单元放入【CS的值】
  • call dword ptr ss:[0]
call dword ptr ss:[0]
等价于
push CS
push IP
jmp dword ptr ss:[0]

将  CS  压入栈,也就是存放到   0EH-0FH  内存单元
将  IP  压入栈,也就是存放到  0CH-0DH  内存单元
此时的IP 已经完成自动增加,IP的值为Y,是nop语句的偏移地址

执行 jmp 指令,又等价于设置新的CS和IP值,再跳转到CS:IP
(IP)= SS:[0] = X  低地址是偏移地址
(CS)= SS:[02] = CS 高地址是段地址
相当于,段地址一直没有变过,IP值现在为X,CS:IP指向 标号s
  • 标号s 开始的指令
mov ax,offset s
    ax的值变为 X (标号s的偏移地址)

sub ax,ss:[0ch]
    ss:[0cH] 存着 Y (nop语句的偏移地址)
    sub 是减法指令
    X-Y 本质就是 nop 语句所占用的内存单元个数
    nop语句只占用1个内存单元
    X-Y的值为 1,即0001H
AX的值最终为 0001H

mov bx,CS  
    bx的值变成 CS
sub ss:[0eH]
    ss:[0eH] 存着 CS
    CS自己减去自己当然等于0,即0000H
BX的值最终为 0000H

答案

  • AX 的值为 0001 H
  • BX 的值为 0000 H

关于检测点10.5 (1)的扩展讨论

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