1. 匯編語言中怎樣定義一個變數
不管上ASM匯編還是8051匯編,變數定義的格式都是:
變數名 DB 內容
例如:BUF DB 100
就是在內存中定義一個單元,「取名」叫BUF,實際上BUF是該單元的地址,該單元的初始化內容為100;在程序中可以對BUF進行讀寫。
2. 在匯編中對變數定義中 如 X DW 2;那麼X中存放的到底是什麼是2 存放的地址還是數值2
這是不應該的,可能是你理解上的一些錯誤。
DB,DW等一系列語句是匯編的偽代碼,相當於C語言里的預處理指令。
所以X DW 2隻是相當於給常量2取了一個名字,以便於調用。而實際程序中止保存了常量2,而沒有X的位置。
X就是表示X的值,而[X]則表示以X的值為地址的內存空間。
3. 匯編語言中字元串變數是如何存儲的啊
C++的關鍵字 asm
微軟詳述:
__asm關鍵字啟動內聯匯編並且能寫在任何c/c++合法語句之處.它不能單獨出現.它必須接匯編指令、一組被大括弧包含的指令或一對空括弧.術語「__asm 塊」在這里是任意一個指令或一組指令無論是否在括弧內。
以下代碼片段是在括弧內的一個簡單的__asm塊。
__asm
{
mov al, 2
mov dx, 0xD007
out al, dx
}
另一種方法是,你可以在每個匯編指令前放置__asm
__asm mov al, 2
__asm mov dx, 0xD007
__asm out al, dx
因為__asm關鍵字是一個語句分隔符,你也可以將匯編指令放在同一行:
__asm mov al, 2 __asm mov dx, 0xD007 __asm out al, dx
以上三個的例子產生相同的代碼,但是第一種風格(把__asm塊用括弧括起來)有一些優勢。括弧可以清晰的將C或C++代碼和匯編代碼分開,並且避免了不必要的重復__asm關鍵字。括弧也能避免模糊性。如果你想在__asm塊的同一行放置一個C或C++語句,你必須將塊用括弧括
起來。沒有括弧,編譯器不能告訴匯編代碼在哪裡停止而C或C++代碼在哪裡開始。最後,因為在括弧的文字有和原始MASM一樣的格式,你能輕松的從一個已有的MASM源文件里剪切和黏貼文字到文件來。
不同於C和C++的括弧,包含__asm塊的括弧對變數的作用域並沒有效果。你也能嵌套__asm塊,嵌套對變數作用域也沒有效果。
請參考
4. 匯編定義變數的問題`
這個語句的意思應該是定義一個存儲單元,裡面存放12H,34H,H表示12和34是16進制,
5. 匯編分配的存儲空間如何在c中使用
1、匯編中,所有的變數的存儲模式都是由程序員定義的。即幾種定址方式是指令形式確定的。
如MOVC、MOVX、MOV @Ri,MOV X,SETB……,緊跟的地址操作數需要程序員指定,各自獨立。數據含義及存放地址需要設計人員根據需要分配。
2、在C中,無需關注具體的地址。只需要指定變數的屬性即可。編譯時自動分配。溢出時將提示。
如 char code x[5]={1,2,3,4,5};這個表格存放在ROM里
char bdata y;這個變數存放在可位定址的空間20H-2FH,且y可位定址。
bit z;這個變數存放在位定址空間。
char idata a;這個變數存放在內部RAM中。
char xdata b;這個變數存放在外部RAM中。
如果你想指定地址訪問:XBYTE[]CBYTE[]等都可(需ABSACC.H支持)
6. 如何匯編語言定義變數
匯編語言定義變數的格式為 :【變數名】【變數類型】【數值列表】
其中,變數類型有DB,DW,DD等,分別表示變數佔有的內存空間(依次為1,2,4個位元組)
如:
A DB 1,2,3,4 就定義了名稱為A的4個佔1個位元組的變數,分別是1,2,3,4(嚴格來說是0001,0010,0011,0100)保存在系統分配的內存空間中。
如果是A DW 1,2,3,4則保存的值為(00000001,00000010,00000011,00000100)
(6)匯編變數定義的存儲擴展閱讀:
注意事項
由於匯編語言是面向機器的語言,沒有對函數的定義,函數的實現是通過中斷調用的,(一個代碼段跳到另外一個代碼段) 所以對全局變數和局部變數的體現是通過棧來實現的。
即:
全局變數保存在數據段中,即偽代碼中聲明的DATA SEGMENT,任何時刻都能調用。
而局部變數則保存在棧段中,是偽代碼中聲明的STACK SEGMENT,平時不調用,調用中斷時把局部變數從棧里取出來。
7. 在匯編語言中,定義常量、變數、分配內存空間的是什麼指令
1、定義一個常量一般可用EQU偽指令來實現
一般使用格式:
符號名 EQU 表達式
如:
NUMBER EQU 200H ; 給緩沖區的長度取一個符號名
STRING EQU 「My Strings"
LEN EQU NUMBER+2
2、定義變數
匯編語言在數據段使用數據定義偽指令定義變數,對數據定義偽指令說明如下:
(1)db((byte,位元組,一位元組寬)
(2)dw(word,字,兩位元組寬)
(3)dd(double word,雙字,四位元組寬)
示例如下:
BUF0 DB 1 ;定義一個位元組型變數,名稱是BUF0,初始值是1
BUF1 DB "2" ;定義一個字元型變數,名稱是BUF1,初始值是"2"
BUF2 DW 10H ;定義一個字型變數,名稱是BUF2,初始值是10H
3、分配內存
可在在前面定義變數的基礎上利用DUP偽指令來分配內存
如:
MEM1 DW 5 DUP(20) ; 分配20個字長度空間,每個字的初始化為5.
8. 匯編和C-51程序是如何設置變數所處的存儲器區域的
匯編中的變數可以直接指定變數的地址,
而在C-51中是通過關鍵字 data 和xdata 來區別的,前者是在片內RAM,後者是在片外RAM,例如: int data y;就定義了各個存儲於片內的整型變數;int xdata x;就定義了一個存儲在片外的整型變數。兩外,在C-51中也可以直接指定變數地址,可以使用宏替換XDATA[]或者at 關鍵字,詳細內容建議查閱相關書籍,說的太多了不利於樓主的自學能力!
相信自己!
記得加分喲!
9. 匯編語言中定義的變數是存放在哪的內存還是寄存器
內存