鱼C论坛

 找回密码
 立即注册
查看: 2885|回复: 2

[学习笔记] 《零基础入门学习汇编语言》第二十九讲

[复制链接]
发表于 2017-7-9 23:51:10 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 shuiyu 于 2018-1-21 10:47 编辑

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

一、在代码段中使用数据
(1)编程计算以下8个数据的和,结果存在ax 寄存器中:
   0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H

解:一个是加了入口的,一个没加入口。
1.PNG


(2)程序第一行中的 “dw”的含义是定义字型数据。dw即define word(定义16个字型单元,十六位的);依葫芦画瓢DB就是定义8个字型数据。这些数据之间以逗号分隔。


(3)程序中的指令就要对这8个数据进行累加,可这8个数据在哪里呢?
解:由于它们在代码段中,程序在运行的时候CS中存放代码段的段地址,所以我们可以从CS中得到它们的段地址。(即数据就是存在CS这个段里)

(4)这8个数据的偏移地址是多少呢?
解:因为用dw定义的数据处于代码段的最开始,所以偏移地址为0,这8 个数据就在代码段的偏移0、2、4、6、8、A、C、E处。程序运行时,它们的地址就是CS:0、CS:2、CS:4、CS:6、CS:8、CS:A、CS:C、CS:E。

(5)后面的就是前面几讲中的循环,我就不详细讲了。

(6)
如何让这个程序在编译后可以存系统中直接运行呢?
解:加入口(就是start)。
在没有加入口的程序中,对于小甲鱼教程中使用“-U 16f8:0”和“-U 13f8:10”翻译出来的结果不一样,我的理解是这样的:
见下图可以发现用两种不同的查看方法,第一种使得BX消失了(没被翻译出来)
2.PNG

原因:由于没有加入口,CPU就认为CS:0到CS:10也是数据的一部分,从而误读了指令;导致出现这些我们看不到的命令。(如果把IP改到10处,然后执行也是可以正常执行的

(7)探讨end的作用:
end 除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。一开始我也以为入口是靠start通知编译器的,现在才知道原来是靠end通知的编译器。





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


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

评分

参与人数 2荣誉 +8 鱼币 +8 收起 理由
不二如是 + 3 + 3 感谢楼主无私奉献!
小甲鱼 + 5 + 5 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2017-7-9 23:52:48 | 显示全部楼层
等你补齐~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-10 00:56:10 | 显示全部楼层

补齐了哟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 23:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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