位置:51电子网 » 技术资料 » 单 片 机

寻址方式与指令系统

发布时间:2008/5/27 0:00:00 访问次数:592

http://www.hificat.com

一、概述

  1、指令的格式

  我们已知,要让计算机做事,就得给计算机以指令,并且我们已知,计算机很“笨”,只能懂得数字,如前面我们写进机器的75h,90h,00h等等,所以指令的第一种格式就是机器码格式,也说是数字的形式。但这种形式实在是为难我们人了,太难记了,于是有另一种格式,助记符格式,如mov p1,#0ffh,这样就好记了。 这两种格式之间的关系 呢,我们不难理解,本质上它们完全等价,只是形式不一样而已。

  2、汇编

  我们写指令使用汇编格式,而计算机只懂机器码格式,所以要将我们写的汇编格式的指令转换为机器码格式,这种转换有两种方法:手工汇编和机器汇编。手工汇编实际上就是查表,因为这两种格式纯粹是格式不同,所以是一一对应的,查一张表格就行了。不过手工查表总是嫌麻烦,所以就有了计算机软件,用计算机软件来替代手工查表,这就是机器汇编。

二、寻址

  让我们先来复习一下我们学过的一些指令:mov p1,#0ffh,mov r7,#0ffh这些指令都是将一些数据送到相应的位置中去,为什么要送数据呢?第一个因为送入的数可以让灯全灭掉,第二个是为了要实现延时,从这里我们可以看出来,在用单片机的编程语言编程时,经常要用到数据的传递,事实上数据传递是单片机编程时的一项重要工作,一共有28条指令(单片机共111条指令)。下面我们就从数据传递类指令开始吧。

分析一下mov p1,#0ffh这条指令,我们不难得出结论,第一个词mov是命令动词,也就是决定做什么事情的,mov是move少写了一个e,所以就是“传递”,这就是指令,规定做什么事情,后面还有一些参数,分析一下,数据传递必须要有一个“源”也就是你要送什么数,必须要有一个“目的”,也就是你这个数要送到什么地方去,显然在上面那条指令中,要送的数(源)就是0ffh,而要送达的地方(目的地)就是p1这个寄存器。在数据传递类指令中,均将目的地写在指令的后面,而将源写在最后。

这条指令中,送给p1是这个数本身,换言之,做完这条指令后,我们可以明确地知道,p1中的值是0ffh,但是并不是任何时候都可以直接给出数本身的。例如,在我们前面给出的延时程序例是这样写的:

mainsetb p1.0     ;(1)

   lcall delay ;(2)

    clr p1.0      ;(3)

   lcall delay   ;(4)

    ajmp main    ;(5)

<

http://www.hificat.com

一、概述

  1、指令的格式

  我们已知,要让计算机做事,就得给计算机以指令,并且我们已知,计算机很“笨”,只能懂得数字,如前面我们写进机器的75h,90h,00h等等,所以指令的第一种格式就是机器码格式,也说是数字的形式。但这种形式实在是为难我们人了,太难记了,于是有另一种格式,助记符格式,如mov p1,#0ffh,这样就好记了。 这两种格式之间的关系 呢,我们不难理解,本质上它们完全等价,只是形式不一样而已。

  2、汇编

  我们写指令使用汇编格式,而计算机只懂机器码格式,所以要将我们写的汇编格式的指令转换为机器码格式,这种转换有两种方法:手工汇编和机器汇编。手工汇编实际上就是查表,因为这两种格式纯粹是格式不同,所以是一一对应的,查一张表格就行了。不过手工查表总是嫌麻烦,所以就有了计算机软件,用计算机软件来替代手工查表,这就是机器汇编。

二、寻址

  让我们先来复习一下我们学过的一些指令:mov p1,#0ffh,mov r7,#0ffh这些指令都是将一些数据送到相应的位置中去,为什么要送数据呢?第一个因为送入的数可以让灯全灭掉,第二个是为了要实现延时,从这里我们可以看出来,在用单片机的编程语言编程时,经常要用到数据的传递,事实上数据传递是单片机编程时的一项重要工作,一共有28条指令(单片机共111条指令)。下面我们就从数据传递类指令开始吧。

分析一下mov p1,#0ffh这条指令,我们不难得出结论,第一个词mov是命令动词,也就是决定做什么事情的,mov是move少写了一个e,所以就是“传递”,这就是指令,规定做什么事情,后面还有一些参数,分析一下,数据传递必须要有一个“源”也就是你要送什么数,必须要有一个“目的”,也就是你这个数要送到什么地方去,显然在上面那条指令中,要送的数(源)就是0ffh,而要送达的地方(目的地)就是p1这个寄存器。在数据传递类指令中,均将目的地写在指令的后面,而将源写在最后。

这条指令中,送给p1是这个数本身,换言之,做完这条指令后,我们可以明确地知道,p1中的值是0ffh,但是并不是任何时候都可以直接给出数本身的。例如,在我们前面给出的延时程序例是这样写的:

mainsetb p1.0     ;(1)

   lcall delay ;(2)

    clr p1.0      ;(3)

   lcall delay   ;(4)

    ajmp main    ;(5)

<

相关IC型号
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!