当前位置: 网学 > 编程文档 > 汇编语言 > 正文

学习汇编前你应该知道的知识4 汇编程序

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式
f:0000 L20
141F:0000   48 65 6C 6C 6F 2C 20 4D-72 2E 32 38 36 2E 24 00   Hello, Mr.286.$.
141F:0010   B8 1F 14 8E D8 8D 16 00-00 B4 09 CD 21 B8 00 4C   !..L
-q

E:\Download\Masm>
------------------------------------------------------------------------------
上面是什么呀?还记得前面说的吗?
1420:0000 B81F14         MOV     AX,141F
   |   |       |           |           |
段址:偏址 机器语言       mov指令 把段地址的地址(141f)赋值给AX寄存器。

1420:0012后面的是垃圾数据,不用管它,把上面程序与源程序作一个比较,看有什么不用,差别在于把标号语言转成实际地址了。
程序前两行一执行,数据段地址就变成了141f,而那个字符串偏移地址在0000,由(LEA     DX,[0000]看出),所以我用-d 141f:0000 L20(后面L20表示只显示20个字节),就能把段地址显示出来了。
所以刚才的程序在内存中就变成了:
141f:0000 Hello, Mr.286.contentnbsp;  ----->这是段地址里的内存
1420:0000 B81F14         MOV     AX,141F   ------>这是代码段里的内存。data变成了实际地址
1420:0003 8ED8           MOV     DS,AX
1420:0005 8D160000       LEA     DX,[0000] ------>偏址变成了0000,因为实际上msg也就是从头开始的。当然是0了。
1420:0009 B409           MOV     AH,09     ------->注意Debug里,默认的是十六进制
1420:000B CD21           INT     21
1420:000D B8004C         MOV     AX,4C00
1420:0010 CD21           INT     21

 

 


刚刚学习了8086/8088汇编语言,发现寻址方式非常重要,于是做了一个小总结,请各位笑纳。
概念:
     1.指令集:cpu能够执行的指令的集合。
     2.指令:cpu所能够执行的操作。
     3.操作数:参加指令运算的数据。
     4.寻址方式:在指令中得到操作数的方式。
现在就重点讨论寻址方式,说白了也就是cpu怎么样从指令中得到操作数的问题。另外再强调一点操作数还分种类:
1)数据操作数:全都是在指令当中参加操作的数据。
     1.立即操作数:它在指令中直接给出。
     2.寄存器操作数:它被放到寄存器中。
     3.存储器操作数:当然在存储器也就是内存中。
     4.i/o操作数:它在你给出的i/o端口中。
2)转移地址操作数:在指令当中不是参加运算或被处理的数据了,而是转移地址。
还可以按照下面分类方式:
1)源操作数src
2)目的操作数dst
源操作数都是指令当中的第2个操作数,在执行完指令后操作数不变。而目的操作数是指令当中的第1个操作数,在执行完操

  • 上一篇资讯: Arm开发经验
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号