㈠ 請問匯編語言中的程序流的定義是什麼
有3種:順序結構,分支結構,循環結構
㈡ 計算機匯編語言的定義
匯編語言(Assembly Language)是面向機器的程序設計語言.
高級的匯編器如MASM, TASM等等為我們寫匯編程序提供了很多類似於高級語言的特徵,比如結構化、抽象等。在這樣的環境中編寫的匯編程序,有很大一部分是面向匯編器的偽指令,已經類同於高級語言。現在的匯編環境已經如此高級,即使全部用匯編語言來編寫windows的應用程序也是可行的,但這不是匯編語言的長處。匯編語言的長處在於編寫高效且需要對機器硬體精確控制的程序。
在匯編語言中,用助記符(Mnemonic)代替操作碼,用地址符號(Symbol)或標號(Label)代替地址碼。這樣用符號代替機器語言的二進制碼,就把機器語言變成了匯編語言。因此匯編語言亦稱為符號語言。
使用匯編語言編寫的程序,機器不能直接識別,要由一種程序將匯編語言翻譯成機器語言,這種起翻譯作用的程序叫匯編程序,匯編程序是系統軟體中語言處理系統軟體。匯編語言編譯器把匯編程序翻譯成機器語言的過程稱為匯編。
匯編語言比機器語言易於讀寫、調試和修改,同時具有機器語言全部優點。但在編寫復雜程序時,相對高級語言代碼量較大,而且匯編語言依賴於具體的處理器體系結構,不能通用,因此不能直接在不同處理器體系結構之間移植。
㈢ 一個完整的匯編程序至少需要定義一個段,即____段
一個完整的匯編程序至少需要定義一個段,即 代碼 段.
[80x86匯編語言程序設計教程]有提及這句話:
"通常情況下,代碼和數據分別在代碼段和數據段中,但有時代碼和數據可以合並在一個段中.一個完整的匯編語言源程序至少含有一個代碼段,但一個匯編語言源程序模塊卻可以只有數據段.目前,我們總把數據段安排在程序的前面,把代碼段安排在程序的後面,但不是非要這樣安排."
㈣ 匯編語言 定義問題
DATAS SEGMENT
...
DATAS ENDS
這是定義一個數據段,是匯編語言的段定義偽指令。
因為cpu內存採用段管理機制對程序機構有影響,使得任何類型存儲器的訪問,都必然會有段的參與。
偽指令的格式如下:
段名 SEGMENT [對齊類型】【組合類型】【類別】
【段內語句序列】
段名 ENDS
匯編語言程序的段名可以是唯一的,也可以與其他段同名,如果同名,則後者被認為是前者的後續,他們屬於同一個段!
【】里的可以根據需要選擇,可以預設
STRING DB 'PLEASE INPUTX',13,10,'$'
X1 DB 13,10,'1','$'
X2 DB 13,10,'2','$'
X3 DB 13,10,'3','$'
X4 DB 13,10,'4','$'
這段程序定義了一個字元串,長度為16位元組,從低地址到高地址一次存放,高地址存放高位元組,低地址存放低位元組
㈤ 匯編程序的定義是什麼
用匯編語言編寫的叫做匯編語言源程序
而匯編程序是匯編語言源程序經過編譯後的結果
㈥ 什麼叫匯編程序
簡單明確的定義: 就是將匯編語言源程序自動翻譯成機器語言代碼的可執行的目標程序
這個能自動翻譯的程序就叫匯編程序。
是一個編程工具。
滿意就選滿意回答吧
㈦ 如何匯編語言定義變數
匯編語言定義變數的格式為 :【變數名】【變數類型】【數值列表】
其中,變數類型有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)
注意事項
由於匯編語言是面向機器的語言,沒有對函數的定義,函數的實現是通過中斷調用的,(一個代碼段跳到另外一個代碼段) 所以對全局變數和局部變數的體現是通過棧來實現的。
即:
全局變數保存在數據段中,即偽代碼中聲明的DATA SEGMENT,任何時刻都能調用。
而局部變數則保存在棧段中,是偽代碼中聲明的STACK SEGMENT,平時不調用,調用中斷時把局部變數從棧里取出來。
㈧ 匯編程序的變數什麼段定義
一般都是在數據段定義,因為這樣方便維護,也很清晰
但如果你願意,在棧段和代碼段定義變數都是可以的
你可以試試在代碼段用 db dw dd 定義幾個變數
都是可以通過編譯和訪問的,【但沒有人推薦你在代碼段定義變數】
㈨ 匯編語言定義
匯編語言,直接解釋成機器指令。一個機器對應的指令是不一樣的,所以移植性不好,難理解,MASM
ADD, SUB 等指令
c語言相對於匯編語言是高級語言,最後還是要變成匯編語言,再變成機器指令。再任何機器都可以編譯,執行,移植性好。
+相對於匯編的ADD
-相對於匯編的sub.
可讀性也好
㈩ 匯編程序段中數據段的定義
DATASEGMENT
STR1DB'whatisyourname?',13,10,'$'
CNEQU$-STR1
STR2EQUSTR1+CN-5
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,ES:DATA
START:MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVDX,OFFSETSTR1
MOVAH,9
INT21H
MOVSI,OFFSETSTR1
MOVDI,OFFSETSTR2
MOVCX,CN
ADDSI,CN-1
ADDDI,CN-1
STD
REPMOVSB
MOVDX,OFFSETSTR2
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
教材中有詳細的介紹,請認真閱讀,多復習。
es是附加數據段段地址,程序中是將數據段和附加數據段同段。
str1是21個位元組。
cn和str2在這里都是常量。
數據段中只定義了存儲區str1。(但又將str2當存儲區使用,這種用法少見,不要學!)
============================================================
以上操作的問題,str2並未申請緩沖區,在執行時有越界的風險!
============================================================
以下是規范的程序:
DATASEGMENT
STR1DB'whatisyourname?',13,10,'$'
CNEQU$-STR1
STR2DBCNDUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,ES:DATA
START:MOVAX,DATA
MOVDS,AX
MOVES,AX
LEADX,STR1
MOVAH,9
INT21H
LEASI,STR1
LEADI,STR2
MOVCX,CN
ADDSI,CN-1
ADDDI,CN-1
STD
REPMOVSB
LEADX,STR2
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART