新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)教程:?jiǎn)纹瑱C(jī)尋址方式與指令系統(tǒng)

51單片機(jī)教程:?jiǎn)纹瑱C(jī)尋址方式與指令系統(tǒng)

作者: 時(shí)間:2012-06-11 來源:網(wǎng)絡(luò) 收藏

通過前面的學(xué)習(xí),我們已經(jīng)了解了內(nèi)部的結(jié)構(gòu),并且也已經(jīng)知道,要控制,讓它為我們干學(xué),要用,我們已學(xué)了幾條,但很零散,從現(xiàn)在開始,我們將要地學(xué)習(xí)8051部份。

本文引用地址:http://butianyuan.cn/article/171313.htm

一、概述

1、指令的格式

我們已知,要讓計(jì)算機(jī)做事,就得給計(jì)算機(jī)以指令,并且我們已知,計(jì)算機(jī)很“笨”,只能懂得數(shù)字,如前面我們寫進(jìn)機(jī)器的75H,90H,00H等等,所以指令的第一種格式就是機(jī)器碼格式,也說是數(shù)字的形式。但這種形式實(shí)在是為難我們?nèi)肆?,太難記了,于是有另一種格式,助記符格式,如MOV P1,#0FFH,這樣就好記了。 這兩種格式之間的關(guān)系呢,我們不難理解,本質(zhì)上它們完全等價(jià),只是形式不一樣而已。

2、匯編

我們寫指令使用匯編格式,而計(jì)算機(jī)和單片機(jī)只懂機(jī)器碼格式,所以要將我們寫的匯編格式的指令轉(zhuǎn)換為機(jī)器碼格式,這種轉(zhuǎn)換有兩種辦法:手工匯編和機(jī)器匯編。手工匯編實(shí)際上就是查表,因?yàn)檫@兩種格式純粹是格式不一樣,所以是一一對(duì)應(yīng)的,查一張表格就行了。不過手工查表總是嫌麻煩,所以就有了計(jì)算機(jī)軟件,用計(jì)算機(jī)軟件來替代手工查表,這就是機(jī)器匯編。

二、單片機(jī)的

讓我們先來復(fù)習(xí)一下我們學(xué)過的一些指令:MOV P1,#0FFH,MOV R7,#0FFH這些指令都是將一些數(shù)據(jù)送到對(duì)應(yīng)的位置中去,為什么要送數(shù)據(jù)呢?第一個(gè)因?yàn)樗腿氲臄?shù)能讓燈全滅掉,第二個(gè)是為了要實(shí)現(xiàn)延時(shí),從這里我們能看出來,在用單片機(jī)的編程語言編程時(shí),經(jīng)常要用到數(shù)據(jù)的傳遞,事實(shí)上數(shù)據(jù)傳遞是單片機(jī)編程時(shí)的一項(xiàng)重要工作,一共有28條指令(單片機(jī)共111條指令)。下面我們就從數(shù)據(jù)傳遞類指令開始吧。

分析一下MOV P1,#0FFH這條指令,我們不難得出結(jié)論,第一個(gè)詞MOV是命令動(dòng)詞,也就是決定做什么事情的,MOV是MOVE少寫了一個(gè)E,所以就是“傳遞”,這就是指令,規(guī)定做什么事情,后面還有一些參數(shù),分析一下,數(shù)據(jù)傳遞必須要有一個(gè)“源”也就是你要送什么數(shù),必須要有一個(gè)“目的”,也就是你這個(gè)數(shù)要送到什么地方去,顯然在上面那條單片機(jī)指令中,要送的數(shù)(源)就是0FFH,而要送達(dá)的地方(目的地)就是P1這個(gè)寄存器。在數(shù)據(jù)傳遞類指令中,均將目的地寫在指令的后面,而將源寫在最后。

這條指令中,送給P1是這個(gè)數(shù)本身,換言之,做完這條指令后,我們能明確地知道,P1中的值是0FFH,但是并不是任何時(shí)候都能直接給出數(shù)本身的。例如,在我們前面給出的單片機(jī)延時(shí)程序例是這樣寫的:

MAIN: SETB P1.0     ;(1)

LCALL DELAY ;(2)

CLR P1.0      ;(3)

LCALL DELAY  ?。唬ǎ矗?/p>

AJMP MAIN   ??;(5)

;以下子程序

DELAY: MOV R7,#250  ??;(6)

D1: MOV R6,#250  ?。唬ǎ罚?/p>

D2: DJNZ R6,D2   ??;(8)

DJNZ R7,D1  ??;(9)

RET       ?。唬ǎ保埃?/p>

END       ?。唬ǎ保保?/p>

表1


上一頁 1 2 下一頁

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉