當前位置:首頁 » 服務存儲 » 匯編語言的字元串怎麼存儲的
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

匯編語言的字元串怎麼存儲的

發布時間: 2022-02-01 13:57:31

A. 王爽匯編語言db存儲字元串為什麼是兩個位元組啊

db 定義的數據應按 位元組 進行分析、辨識、存儲。

王爽 書中這部分內容 是 bug。

B. 匯編語言:string DB "i am a student"這條語句將字元串如何存儲的

匯編語言:string DB "i am a student"這條語句將字元串如何存儲的?
--------
順序存儲。
一個字元,佔用一個位元組。
最後並沒有'\0'。

C. 匯編語言中字元串的使用

mov dl,[len1]
mov ah,02h
int 21h
----
呵呵,輸出,不是這樣簡單的。
len1,是二進制數字,必須把它變成十進制的個位、十位..,
再把各位數,都變換成ASCII碼,放到DL中,最後才能輸出到顯示屏。

D. 匯編語言,從緩存區輸出字元串,CX值存放問題

用A號功能存入了字元串到BUFFER,
[BUFFER],是預定的緩存大小,
[BUFFER+1],是實際輸入的字元數目。
----------------------
字元數目,只是一個位元組。

MOVCL,[BX-1]----取出一個位元組,這是對的。
MOVCX,[BX-1]----下面這些,都是取兩個位元組,都是錯的。
MOVCX,[BUFFER+1]
MOVCX,BUFFER+1
-----------------------
採納答案中,說法都是錯誤的。
------
MOVCX,[BX-1];--針對這條指令,他說:
《BUFFER是位元組緩沖區,所以這里是操作數據不匹配》

執行這條指令後,所需的數據,確實是傳送到CL了。
只是多傳送了CH而已。

錯誤,在於多傳送了一個位元組,並不是匹配不匹配的問題。
------
MOVCX,BUFFER+1,--針對這條指令,他說:
《指令執行過後,CX里存儲的是BUFFER的地址+1,是個地址,不是值》
如果做過實驗,他就不會這么說了。

他弄混了下面的指令:
MOVCX,OFFSETBUFFER--這才是傳送地址。
-----------------------

E. 匯編語言中字元串存儲時DB DW怎麼確定是選用DB存儲還是DW存儲

字元串存儲必須用db(單位元組順序存放),

不能用dw(雙位元組順序存放,且要分開編輯。按低到低位元組、高到高位位元組對應)

codesegment
assumecs:code
org100h
start:
jmpbbb
nop
msg1dw'he','ll','o','wo','rl','d','$'

bbb:
pushcs
popds

leadx,msg1
movah,9
int21h

movah,4ch
int21h
codeends
endstart

上例輸出的是「ehll oowlr d」,而不是「hello world」

F. c語言中怎麼存一個字元串

在c語言中存儲一個字元串,一般有兩種方法,一種是字元指針,一種是使用字元數組。比如:

constchar*str="hello";//使用字元串指針
constcharstr[]="hello";//使用字元數組

如果保存的字元串,需要修改。一般使用字元數組。比如:

charpath[256]="c:\windows\";
strcat(path,"system32");

G. (匯編)關於匯編語言的字元串

1)不用,如果不用串操作指令,我們可以通過設定循環次數,或在結束處加0判斷是否結束。
2)定義字元串在匯編語言中用一對『
』表示,如
c
db
'happy!'

H. 匯編語言中字元串變數是如何存儲的啊

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塊,嵌套對變數作用域也沒有效果。
請參考

I. 匯編語言 字元串傳送和字元串儲存的區別!

傳送:一般指的是將數據傳送到寄存器中。
儲存:一般指的是將數據存儲到制定的內存地址中。

J. 匯編語言字元竄存儲

字元串在內存中以位元組(byte)為單位存儲,字元串包含多少字元就需要多少byte來存。匯編中定義一個字元串如下:

myStringBYTE"ABCDEF",0;常以0作為字元串的結尾

內存中存儲順序如圖所示,從箭頭開始,依次向下。假設第一個地址是0000h,下一個byte的地址就是00001h,依次類推。內存中存儲的是字元的二進制編碼,比如A41h=01000001b

希望對LZ有用~

PS:2L說的是英特爾架構CPU的「小尾順序」規則,其他一些CPU可能採用「大尾順序」

比如定義一個字(WORD):myWordWORD1234h如果是小尾順序,那低地址存34h,高地址存12h,如圖中0000h的地方存34h,00001h的地方存12h。大尾順序則相反~(汗。。。。但願不顯得太羅嗦)