1樓:做而論道
是的,用 keil 程式設計,它能自動識別組合語言中的暫存器名稱。
不需要另外再說明。
mov p1,#aah
應為:mov p1,#0aah
-------------
如果你願意,也可以對已有的暫存器、地址,重新命名。
使用 equ 偽指令即可。
2樓:
特殊功能暫存器是預設了的,像00-7fh的通用ram,如果你要命名,就可以按照你自己的命名規則來命名
3樓:修者世界
51微控制器組合語言中的特殊功能暫存器是預設定義了的,嚴格而言是是編譯器定義的,而使用者使用的暫存器是可以自由定義的,以下說說具體情況:
1、00h~1fh,這部分為工作暫存器,四個組的r0~r7,系統預設定義的,使用者最好不要隨意定義。
2、20h~2fh,這部分為位定址暫存器,使用者可以定義,但最好不輕易用作他用。
3、30h~7fh,這部分為使用者隨意使用的暫存器區,可以隨意定義。
4、80h~ffh,這部分為特殊功能暫存器區,使用者不能定義。
4樓:匿名使用者
標準的51微控制器 暫存器 是預設定義的
非標的暫存器 需要另外定義
51微控制器組合語言如何定義區域性變數?高手幫幫忙……
5樓:匿名使用者
一般都用r0-r7,
在進入子程式時先將需要用到的r0-r7入棧,然後就可以改變r0-r7的值
返回前將r0-r7從堆疊中恢復。
6樓:做而論道
51微控制器組合語言如何宣告區域性變數?
--用 equ 偽指令,即可。
51微控制器定義或宣告一個變數在程式執行時是否需要時間?
--偽指令,不佔用微控制器的時間。
或是定義一個變數,這條指令的執行時間是多少?
--零秒。
--偽指令,不用微控制器執行。
7樓:匿名使用者
定義一個區域性變數a,編譯器會將a的地址分配到暫存器組r0~r7中去。由於它是區域性變數,所以編譯器將使用立即數賦值語句為代表a的暫存器rn賦值,最後計算的結果也將存在暫存器組中,位置由編譯器任意指定。
定義一個全域性變數a,編譯器將在ram中為變數a指定一個專用地址,在c程式中給a賦的值將存入這個專用地址中。程式操作變數a時,首先從專用地址中取出存放的值,然後再進行計算。
8樓:亂七胡說八糟亂想
51微控制器在彙編中無法由你先定區域性變數。只有你在編 程使用過程 中你自己注意使用,最好的就是用切換暫存器區來快速 轉換使用。
51微控制器組合語言中的 $ 代表啥意思?
9樓:匿名使用者
組合語言中 $代表當前指令的地址;
如:data segment
str1 db a,b,c,d
leng equ $-str
這裡的就是當前地址減去str1的初始地址,即可得到str1的長度。 在字串中是結束標誌,就是字串遇到$才會結束,類似於c語言中字串中結尾的'0'。
10樓:清風揚劍
dely: sjmp $ 就是一直在執行這個語句,不調到其他的程式,直到來了中斷。
11樓:匿名使用者
代表當前的指令所在的地址
舉個例子來說,在0050h處定義了幾個位元組資料0050h:01h,02h,03h,04h那麼下一條指令的地址應該為0054h,若下一條語句為count equ $-0050h,則count就等於4(0054h-0050h),但是一般 程式設計的時候是不知道資料定義在**的,所以你並不知道$的具體值是多少,因為0050h是用標號來表示的,比如說用了table,那麼你的語句 count equ $-table一樣可以得到資料塊的長度4.
12樓:匿名使用者
代表當前指令的所在地址
組合語言微控制器,組合語言怎麼寫入微控制器
rlc 是帶進位的迴圈左移,rlc a即將a的內容左移一位,將進位位c中的值移到累加器a的最低位,a的最高位移到c裡。譬如說 設a 01000001,c 1 則如果執行rl 則a 10000010,c 1 a所有位左移一位,最低位補零,c不參加移位操作,保持原值不變 如果執行rlc後,則a 1000...
微控制器組合語言程式設計,全國微控制器組合語言程式設計師
org 0000h main mov dptr,3000h clr r0 clr r1 clr r2 mov r3,100 loop mov a,dptr clr c cjne a,0h,loop1 inc r0 djnz r3,loop loop1 rl a jc fushu inc r1 djn...
微控制器組合語言的幾個疑問
靈若伊雪 1 r1 20h 不是一條指令,而只是一種說明,表明r1暫存器中的內容是20h。這個20h是地址還是資料,與這個說明無關。2 在指令 mov r1,40h 中,r1 是間接定址方式,表明r1中的內容是地址,指令的功能表明是將立即數40h傳送到r1指定的地址中。3 在指令中容易混淆的是立即數...