寻址方式与指令系统
发布时间:2008/5/27 0:00:00 访问次数:592
一、概述
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,但是并不是任何时候都可以直接给出数本身的。例如,在我们前面给出的延时程序例是这样写的:
main: setb 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,但是并不是任何时候都可以直接给出数本身的。例如,在我们前面给出的延时程序例是这样写的:
|