汇编语言學習

汇编语言

 

  汇编语言(Assembly Language)是面向机器的程序设计语言.汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言”作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM, TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。
  在汇编语言中,用助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。因此汇编语言亦称为符号语言。
  使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言编译器把汇编程序翻译成机器语言的过程称为汇编。
  汇编语言比机器语言易于读写、调试和修改,同时具有机器语言全部优点。但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。
  汇编语言的特点:
  1.面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。
  2.保持了机器语言的优点,具有直接和简捷的特点。
  3.可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。
  4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。
  5.经常与高级语言配合使用,应用十分广泛。
  汇编语言的应用:
  1.70%以上的系统软件是用汇编语言编写的。
  2.某些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。
  3.某些高级绘图程序、视频游戏程序是用汇编语言编写的。
  汇编语言是我们理解整个计算机系统的最佳起点和最有效途径
  人们经常认为汇编语言的应用范围很小,而忽视它的重要性。其实汇编语言对每一个希望学习计算机科学与技术的人来说都是非常重要的,是不能不学习的语言。
  所有可编程计算机都向人们提供机器指令,通过机器指令人们能够使用机器的逻辑功能。
  所有程序,不论用何种语言编制,都必须转成机器指令,运用机器的逻辑功能,其功能才能得以实现。
  机器的逻辑功能,软件系统功能构筑其上,硬件系统功能运行于下。
  汇编语言直接描述机器指令,比机器指令容易记忆和理解。通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。
  学习汇编语言,向上可以理解软件,向下能够感知硬件,是我们理解整个计算机系统的最佳起点和最有效途径。
  要想学好汇编语言,最起码的ASCII必须知道一些常用的。以下是对应的二进制,十进制,十六进制
  Bin Dec Hex 缩写 字符 解释
  0000 0000 0 00 NUL (null) 空字符
  0000 0001 1 01 SOH (start of handing) 标题开始
  0000 0010 2 02 STX (start of text) 正文开始
  0000 0011 3 03 ETX (end of text) 正文结束
  0000 0100 4 04 EOT (end of transmission) 传输结束
  0000 0101 5 05 ENQ (enquiry) 请求
  0000 0110 6 06 ACK (acknowledge) 收到通知
  0000 0111 7 07 BEL (bell) 响铃
  0000 1000 8 08 BS (backspace) 退格
  0000 1001 9 09 HT (horizontal tab) 水平制表符
  0000 1010 10 0A LF (NL line feed, new line) 换行键
  0000 1011 11 0B VT (vertical tab) 垂直制表符
  0000 1100 12 0C FF (NP form feed, new page) 换页键
  0000 1101 13 0D CR (carriage return) 回车键
  0000 1110 14 0E SO (shift out) 不用切换
  0000 1111 15 0F SI (shift in) 启用切换
  0001 0000 16 10 DLE (data link escape) 数据链路转义
  0001 0001 17 11 DC1 (device control 1) 设备控制1
  0001 0010 18 12 DC2 (device control 2) 设备控制2
  0001 0011 19 13 DC3 (device control 3) 设备控制3
  0001 0100 20 14 DC4 (device control 4) 设备控制4
  0001 0101 21 15 NAK (negative acknowledge) 拒绝接收
  0001 0110 22 16 SYN (synchronous idle) 同步空闲
  0001 0111 23 17 ETB (end of trans. block) 传输块结束
  0001 1000 24 18 CAN (cancel) 取消
  0001 1001 25 19 EM (end of medium) 介质中断
  0001 1010 26 1A SUB (substitute) 替补
  0001 1011 27 1B ESC (escape) 溢出
  0001 1100 28 1C FS (file separator) 文件分割符
  0001 1101 29 1D GS (group separator) 分组符
  0001 1110 30 1E RS (record separator) 记录分离符
  0001 1111 31 1F US (unit separator) 单元分隔符
  0010 0000 32 20 空格
  0010 0001 33 21 !
  0010 0010 34 22 "
  0010 0011 35 23 #
  0010 0100 36 24 $
  0010 0101 37 25 %
  0010 0110 38 26 &
  0010 0111 39 27 '
  0010 1000 40 28 (
  0010 1001 41 29 )
  0010 1010 42 2A *
  0010 1011 43 2B +
  0010 1100 44 2C ,
  0010 1101 45 2D -
  0010 1110 46 2E .
  0010 1111 47 2F /
  0011 0000 48 30 0
  0011 0001 49 31 1
  0011 0010 50 32 2
  0011 0011 51 33 3
  0011 0100 52 34 4
  0011 0101 53 35 5
  0011 0110 54 36 6
  0011 0111 55 37 7
  0011 1000 56 38 8
  0011 1001 57 39 9
  0011 1010 58 3A :
  0011 1011 59 3B ;
  0011 1100 60 3C <
  0011 1101 61 3D =
  0011 1110 62 3E >
  0011 1111 63 3F ?
  0100 0000 64 40 @
  0100 0001 65 41 A
  0100 0010 66 42 B
  0100 0011 67 43 C
  0100 0100 68 44 D
  0100 0101 69 45 E
  0100 0110 70 46 F
  0100 0111 71 47 G
  0100 1000 72 48 H
  0100 1001 73 49 I
  0100 1010 74 4A J
  0100 1011 75 4B K
  0100 1100 76 4C L
  0100 1101 77 4D M
  0100 1110 78 4E N
  0100 1111 79 4F O
  0101 0000 80 50 P
  0101 0001 81 51 Q
  0101 0010 82 52 R
  0101 0011 83 53 S
  0101 0100 84 54 T
  0101 0101 85 55 U
  0101 0110 86 56 V
  0101 0111 87 57 W
  0101 1000 88 58 X
  0101 1001 89 59 Y
  0101 1010 90 5A Z
  0101 1011 91 5B [
  0101 1100 92 5C \
  0101 1101 93 5D ]
  0101 1110 94 5E ^
  0101 1111 95 5F _
  0110 0000 96 60 `
  0110 0001 97 61 a
  0110 0010 98 62 b
  0110 0011 99 63 c
  0110 0100 100 64 d
  0110 0101 101 65 e
  0110 0110 102 66 f
  0110 0111 103 67 g
  0110 1000 104 68 h
  0110 1001 105 69 i
  0110 1010 106 6A j
  0110 1011 107 6B k
  0110 1100 108 6C l
  0110 1101 109 6D m
  0110 1110 110 6E n
  0110 1111 111 6F o
  0111 0000 112 70 p
  0111 0001 113 71 q
  0111 0010 114 72 r
  0111 0011 115 73 s
  0111 0100 116 74 t
  0111 0101 117 75 u
  0111 0110 118 76 v
  0111 0111 119 77 w
  0111 1000 120 78 x
  0111 1001 121 79 y
  0111 1010 122 7A z
  0111 1011 123 7B {
  0111 1100 124 7C |
  0111 1101 125 7D }
  0111 1110 126 7E ~
  0111 1111 127 7F DEL (delete) 删除

 

汇编语言


转载于:https://www.cnblogs.com/Athrun/archive/2008/11/26/1341742.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HOW-TO:带有MySQL的JEE应用程序中具有集群功能的Quartz Scheduler

Quartz Scheduler是Java世界中最流行的调度库之一。 过去&#xff0c;我主要在Spring应用程序中使用Quartz。 最近&#xff0c;我一直在研究将在云中部署的JBoss 7.1.1上运行的JEE 6应用程序中的调度。 我考虑的一种选择是Quartz Scheduler&#xff0c;因为它提供了与数据库的集…

DevStack方式安装queens版openstack

最近在学习openstack,在安装阶段就遇到了很多问题&#xff0c;特把安装过程记录如下&#xff0c;经笔者验证能正确安装openstack。 说明&#xff1a;安装后即为中文版。 2019/01/29: 安装环境&#xff1a; 宿主&#xff1a; Ubuntu 16.04 xenial Hypervisor: kvm 虚拟机&#x…

dev c++ 报错[Error] ld returned 1 exit status 的解决办法

我是个C语言的初学者&#xff0c;在使用dev c 编译器时&#xff0c;遇到一个情况&#xff1a;程序是正确的&#xff0c;能够正常的编译和运行&#xff0c;但是运行一次之后再次运行之时就出现了 报错[Error] ld returned 1 exit status&#xff0c;出现这个问题的原因是&#x…

2008年12月答疑贴

有问题请在此贴跟贴回复&#xff0c;我亦会在此贴回复。 请不要到无关的帖子中跟帖 请尽量描述清楚你的问题和需要&#xff0c;我的理解能力不是很强&#xff0c;呵呵。 请您遵守以下规则&#xff1a; 提问内容中请不要出现 感叹号&#xff0c;跪求等字样。 请尽量不要称呼我为…

androidmanifest.xml权限中文说明

程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES 允 许读写访问”properties”表在checkin数据库中&#xff0c;改值可以修改上传( Allows read/write access to the “properties” t…

C语言使用scanf()函数时,%c前面和后面分别加上空格后的结果

在使用scanf()读取输入的字符时&#xff0c;当转换说明为%c时&#xff0c;"%c"、" %c"、"%c " 这三种不同的写法&#xff0c;对数据读取的结果有什么影响吗&#xff0c;答案是肯定的&#xff0c;%c 加不加空格&#xff0c;空格在前还是在后&am…

Python -- 自动导入所需要的模块

try: import xlwtexcept ImportError as e:   import os   print(e)   os.system("pip install xlwt")转载于:https://www.cnblogs.com/xlx12138/p/10551894.html

借助Apache Hadoop大规模扩展Apache Solr实时实时索引

播客的第22集是与Patrick Hunt的谈话 我们讨论了Apache Solr&#xff08;上游&#xff09;中的新工作&#xff0c;使它可以在Apache Hadoop上工作。 Solr支持将其索引和事务日志文件写入和读取到HDFS分布式文件系统。 这不使用Hadoop Map-Reduce处理Solr数据&#xff0c;而是仅…

C语言,关于getchar()清空回车符的几点经验

最近被getchar()弄的有点糊涂&#xff0c;现在基本缕清了。 拿程序举个例子&#xff1a; #include<stdio.h> int main(void) {char ch1,ch2;printf("Iam testing *********.\n");printf("So hard! ***********\n");ch1getchar();printf("$$$$$…

面试中关于多线程同步,你必须要思考的问题

ReentrantLock的实现网上有很多文章了&#xff0c;本篇文章会简单介绍下其java层实现&#xff0c;重点放在分析竞争锁失败后如何阻塞线程。因篇幅有限&#xff0c;synchronized的内容将会放到下篇文章。 Java Lock的实现 ReentrantLock是jdk中常用的锁实现&#xff0c;其实现逻…

C语言学习,关于fflush 和setvbuf

最近学习C语言的时候&#xff0c;学到文件的输入和输出函数&#xff0c; 对fflush和setvbuf 一直很困惑&#xff0c;现在虽然没有解开&#xff0c;但是有了一点浅显的理解。 1、ffulsh 针对的是输出流&#xff0c;是将输出缓存中的数据推到指向的文件里。 2、如果想清空输入缓…

可怜的mysql

唉&#xff0c;今天刚看到新闻&#xff0c;mysql 5.1 GA 虽然正式发布&#xff0c;但是却有一堆bug。 连mysql的创始人自己都批评sun不应该在未修复重大bug的前提下发布mysql 5.1 GA. 可怜的mysql,可怜的sun转载于:https://www.cnblogs.com/nevernet/archive/2008/12/04/134726…

linux查看用户、创建用户、设置密码、修改用户、删除用户命令

查看用户 tail -1 /etc/passwd tail -1 /etc/shadow id alex echo 123 |passwd --stdin alex # 设置密码&#xff0c;不需要交互[rootlocalhost ~]# tail -l /etc/passwd rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS …

c# 笔记 数据类型转换 数组 函数

1、数据类型的转换&#xff08;cast&#xff09;包括隐性转换和显性转换。 当目标类型一定能满足源类型转换后的要求的话就是隐性转换&#xff0c;不需要任何代码直接转换&#xff0c;如果目标类型不一定能满足源类 型转换后的要求的话就是显性转换&#xff0c;显性转换需要在要…

使用外星人进行测试:如何使用Arquillian测试JPA类型转换器

该帖子与 Aslak Knutsen &#xff08; aslakknutsen &#xff09;一起撰写。 JPA类型转换器为定义实体属性如何持久存储到数据库提供了一种简便的方法。 您可以使用它们来实现许多不同的功能&#xff0c;例如&#xff0c;如上一篇文章中所示&#xff1a;加密数据&#xff1a; …

关于 C语言的 按位取反 ~

1、相关概念&#xff1a; 不管是正整数 还是 负整数在计算机中都是以 补码的形式存在的&#xff1b; 取反&#xff1a;0变1&#xff0c;1变0 就叫做取反&#xff0c;取反 符号位也要改变&#xff1b; 反码&#xff1a;符号位不变&#xff0c;其他位置0变1&#xff0c;1变0&a…

英语句型之展现问题篇3

表达不确定的用词&#xff1a;May, seem, be likely to, possible, probably, perhaps, be said that, be said to...51. In my mind, the following factors/reasons/causes need to be taken into consideration我认为&#xff0c;我们需要考虑下列因素/原因&#xff1a;52. …

【noip模拟赛5】任务分配 降维dp

描述 现有n个任务,要交给A和B完成。每个任务给A或给B完成&#xff0c;所需的时间分别为ai和bi。问他们完成所有的任务至少要多少时间。 输入 第一行一个正整数n&#xff0c;表示有n个任务。接下来有n行&#xff0c;每行两个正整数ai&#xff0c;bi。 输出 一个数&#xff0c;他…

解决win7下无法安装突击者NO.69驱动,“WINDOWS已找到设备的驱动程序,但在试图安装它时错误”...

本人装的是win7旗舰版&#xff0c;由于是ghost安装的&#xff0c;缺少一些文件&#xff0c;之前一直无法正确安装突击者电子狗的驱动程序&#xff0c;老是显示“WINDOWS已找到设备的驱动程序&#xff0c;但在试图安装它时错误”&#xff0c;baidu、google了几天都没解决&#x…

C语言 按位或 正整数与负整数 之间

按位或&#xff1a; 两个位 比对时&#xff0c;如果有一个位 为1&#xff0c;结果就为1&#xff1b; 按位或 时 &#xff0c;都是 按照补码来比对的 &#xff0c;正数的补码 是 本身&#xff0c;负数的补码 不是本身 所以 正负数按位或 要注意&#xff1a; 举例子&#xff1a;…