飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3619|回复: 6

[转贴] 机器语言与汇编语言

[复制链接]
  • TA的每日心情
    开心
    2022-4-18 15:36
  • 签到天数: 207 天

    [LV.7]常住居民III

    发表于 2009-5-17 19:13:39 | 显示全部楼层 |阅读模式
    计算机这玩意的工作必须要接受人的操纵和控制,而我为了让计算机按我的意愿工作,就必须与计算机之间交流信息,这个交流信息的工具就是计算机语言。
    机器指令就是指挥计算机来完成某一个基本操作的命令,机器指令的一般形式为:
    操作码 地址码
    操作码和地址码都是有0和1组成的二进制代码,所以啊每一条机器指令都是一组二进制代码来表示的,操作码指出了运算的种类,有加减乘除、传送、移位等,地址吗指明了参与运算的操作数和运算结果存放的位置。举个例子将偏移地址为100的字存储单元中的内容加2,再回送到原存储器单元中去,如果用N年前8086的机器指令来完成该操作,则相应的机器指令是:      
                              10000011
                          00000110
                          01100100
                          00000000
                          00000010
    看不懂是吧,没事我也没打算让你这么学汇编,但是N年前的牛人们就是用0和1这么写程序的,其中第一行和第二行的两个8位二进制数是操作码,表示要进行‘加’操作,还指明了用何种方式取得两个加数,第三行和第四行中的两个8位二进制数指出了第一个加数(在这我称他为目的操作数)所存放的偏移地址是100(或者说是十六进制的64H),相加的结果也送入该存储单元中。第五个字节的8位二进制数指出了第二个加数(我叫他源操作数)是2.麻烦吧,我也感觉这丫的麻烦。由于机器指令使用二进制表示的,编写程序相当相当麻烦,写出的层序也难以阅读和调试,为了克服这些缺点呢,有人(反正不是我)就想出了用助记符来表示机器指令的操作码,用变量代替操作数的存放地址,还可以在指令前冠以标号,用来表示该指令的存放地址等。这种用符号书写的、其主要操作与机器指令基本上一一对应、并遵循一定语法规则的计算机语言就是你要学的汇编语言。用汇编语言写程序比用0和1代码写程序简单多了,用汇编语言写程序称为汇编程序,所以汇编语言也是面向机器的语言,例如上面的例子用汇编写的话就是一句话的事:ADD WORD PTR DS:[100],2
    其中,ADD为加法指令的助记符,而DS:[100]呢则表示在当前数据段中,偏移地址为100单元中的内容是目的操作数,“WORD PTR”说明了这个目的操作数是16位二进制数,而源操作数是2,相加的结果送入目的操作数所在的单元中,明白不?
    不明白。~~~~
    哪不明白?
    那也不明白
    没事,今天我就想让你知道个大概,想学以后这些东西就自然而然的解开了。
    哦,那你继续在说点我看看
    光顾说了,饿了~~~~ ‘没有性生活的鸡’和香菇都在厨房
    稍等一会我去炖上。
    好了,你给我讲着小鸡炖蘑菇要微火慢炖急不来的,继续给我讲吧
    学汇编也是要微火慢炖急不来的,这也不是三两天就能学好的,我可是提前跟你说好。
    我让你教,你就教怎么这么多废话,你个大男人怎么这么嚰唧。
    为了能让汇编程序正确的完成翻译工作,必须要告诉汇编程序,源程序应从什么位置开始安放,汇编到什么位置结束,数据应放在什么位置,数据的类型是什么,留多少内存单元作临时存储区等。这就要求源程序众应该有一套告诉汇编程序如何进行汇编工作的命令,这种命令称为伪指令。所以由指令助记符、语句标号、数据变量、伪指令及它们的使用规则构成了整个汇编语言的内容。由于汇编语句基本上和机器指令对应,但是比机器指令简单多了,并且便于理解记忆,所编写的源程序也容易阅读和调试,所占的存储空间、执行速度与机器语言也差不多。与那些高级语言相比,汇编语言具有直接和简捷的特点,用它编制程序能精确的描述算法,充分发挥计算机精简的功能。并且汇编写的东西目标程序简短,占用存储空间小,执行速度快,效率高,特别是有些高级语言难以实现的操作,却能简单的使用汇编语言实现,几乎每一个计算机系用,都把汇编语言作为系统的基本配置,汇编程序称为系统软件的核心成分之一。而汇编语言程序设计是从事计算机研究与应用,特别是软件研究的基础。
    哦,怪不得那家伙一直吹嘘自己的汇编多好,哼,这更加深了我要学习汇编的信心。继续再讲些好东西。
    额,好的,在后面我会用到好多东西,先大体给你说说,有个印象就好
    (….) 表示地址“….”中的内容。例如,偏移地址为100的存储单元中的内容为50,则表示成为(100)=50;寄存器BX的内容为0FFFFH,则表示成为(BX)=0FFFFH
    寄存器BX和0FFFFH是什么东西?
    这个不急的,等明天我给你介绍 Intel 8086微处理器的时候就知道了,今天就把我说的这些看看就好,学汇编呢就像炖小鸡,细火慢炖急不来的,又饿了
    恩,那好你继续说吧,小鸡还不行呢,再稍微等会
    [….] 表示以地址“….”中的内容为偏移地址。例如(BX)=03A2H,而(03A2H)=100,则([BX])表示以BX的内容为偏移地址,在该偏移地址中存放的数据。此处的([BX])=100
    EA 偏移地址,表示某一存储单元的偏移地址,即指该存储单元到他所在段段首址的字节距离(后面我也会慢慢说到的)
    PA    段地址,表示某一存储单元的物理地址
    OPD 目的地址,即目的操作数存放的偏移地址
    OPS  源地址,即源操作数存放的偏移地址
    → 表示传送,例如300H→BX表示将操作数300H传送到寄存器BX中;例如(100)=50,(100)→BX表示将偏移地址为100单元中的内容50传送到BX中。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-5-13 10:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-5-18 15:35:40 | 显示全部楼层
    学好汇编语言是破解的基础。
    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2017-12-7 09:16
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2009-5-21 14:56:11 | 显示全部楼层
    了解下,谢谢分享~~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-5-21 15:11:22 | 显示全部楼层
    很想系统的学习.
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-5-27 15:00:46 | 显示全部楼层
    想学破解就要学习机器语言。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-5-30 00:26:37 | 显示全部楼层
    机器语言太难了
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    前天 19:17
  • 签到天数: 1817 天

    [LV.Master]伴坛终老

    发表于 2009-5-30 01:43:41 | 显示全部楼层
    学习好汇编语言是破解的基础。是必需的
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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