鱼C论坛

 找回密码
 立即注册
查看: 3760|回复: 3

[学习笔记] 《零基础入门学习汇编语言》第四十八讲(含检测点10.1、10.2)

[复制链接]
发表于 2017-8-25 18:39:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
越努力,越幸运。欢迎大家来看我的笔记 小白刚学,不对的请各位大佬指正,谢谢

一、ret 和 retf
用汇编语法记简单实用
CPU执行ret指令时,相当于进行:
pop IP

CPU执行retf指令时,相当于进行:
pop IP
pop CS



检测点10.1

补全程序,实现从内存1000:0000处开始执行指令。

assume cs:code
stack segment
     db 16 dup (0)
stack ends

code segment
start:   mov ax,stack
     mov ss,ax
     mov sp,16
     mov ax, 1000h
     push ax
     mov ax,0   
     push ax
     retf
code ends
end start

解:执行reft指令时,相当于进行:
pop ip
pop cs
根据栈先进后出原则,应先将段地址cs入栈,再将偏移地址ip入栈。成功实现了,见下图:
1.PNG

二、call 指令
(1)CPU执行call指令,进行两步操作:
1.将当前的 IP  或  CS和IP 压入栈中(push IP)。
2.转移(jmp near ptr 标号           )。

(2)call 指令不能实现短转移,除此之外,call指令实现转移的方法和 jmp 指令的原理相同。
(3)call 标号
16位位移=“标号”处的地址-call指令后的第一个字节的地址;
16位位移的范围为 -32768~32767,用补码表示;
16位位移由编译程序在编译时算出。


检测点10.2

下面的程序执行后,ax中的数值为多少?
解:ax=6

1000:0   mov ax,0     
1000:3  call s            ;当执行call s 时,相当先执行 push ip   后执行 jmp near ptr s  ,而执行Push时的IP为6
1000:6    inc ax    ​    ​    ​;执行上一句时,CS:IP是指向这一句指令的,但是由于又执行了jmp near ptr s这个指令,故跳过
                                了这条指令。但是我们也可以从这条指令中得知,在执行jmp near ptr s前,IP是指向1000:6的。
1000:7   s: pop,ax        ;因为前面压入IP,所以这里得到前面压入的IP(IP等于6)




谢谢小甲鱼带来的视频教程,感谢!!

本节结束,多谢览阅!
越努力,越幸运。谢谢大家来看我的笔记 小白刚学,不对的请各位大佬指教,谢谢

评分

参与人数 3荣誉 +6 鱼币 +11 贡献 +3 收起 理由
chobits13 + 3 + 3 + 3 感谢楼主无私奉献!
小甲鱼 + 5
不二如是 + 3 + 3 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-18 15:16:17 | 显示全部楼层
为什么执行Push时IP为6?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-19 09:10:00 | 显示全部楼层
小y同学 发表于 2018-3-18 15:16
为什么执行Push时IP为6?

因为在执行到本条语句的时候,IP已经指向下一条语句了,这是前面的知识哦(有可能我没表达清楚,但是就是这么个意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-20 15:27:11 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 23:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表