導航:首頁 > 軟體知識 > 如何定義一個匯編程序段

如何定義一個匯編程序段

發布時間:2023-06-01 17:50:06

⑴ 匯編程序段中數據段的定義

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

⑵ 匯編語言子程序是如何定義的

這樣定義的:

子程序名 PROC NEAR|FAR

拆則 .

.

RET

子程序名 ENDP

子程序名相當於標號,表示本過程的符號地址。過程有NEAR和FAR兩種類型,FAR型的扮螞過程可供段間調用,NEAR型過程僅供段內調用。

在一個過程中,至少要有一條返回指令RET,它可以書寫在過程中的任何位置,但是過程執行的的最後一條指令一定是RET。

(2)如何定義一個匯編程序段擴展閱讀:

注意事項

一、子程序調用指令

格式:CALL [NEAR PTR] 子程序旅缺棚名

CALL指令的兩個作用,1.將斷點地址(CALL指令的下一條指令地址)壓棧保存,2.轉去子程序執行。

[NEAR PTR]可以省略。

二、返回指令

格式:RET [N]

指令作用:實現子程序執行完後返回主程序的指令。從堆棧棧頂彈出一個字數據(段內調用)送入IP作為返回地址。N是立即數,執行完RET之後,再將SP增加N,也叫「平棧」。

閱讀全文

與如何定義一個匯編程序段相關的資料

熱點內容
哪裡找spss數據 瀏覽:346
申請的代理怎麼注銷 瀏覽:683
哪些產品有祛斑的效果 瀏覽:448
美國農業市場怎麼樣 瀏覽:348
換機聯系方式怎麼數據遷移 瀏覽:580
怎麼注冊一個品牌產品 瀏覽:263
抗衰老潔面產品的共性有哪些 瀏覽:516
北訊怎麼交易不了啊 瀏覽:757
多道程序環境什麼意思 瀏覽:35
有哪些奇葩的自熱產品 瀏覽:539
有什麼凈水產品 瀏覽:478
做代理入股需要注意什麼 瀏覽:933
什麼樣的數據是爆款視頻 瀏覽:207
泰國宵夜市場有什麼 瀏覽:594
如何核實學生餐卡的信息 瀏覽:977
資料庫系統為什麼不屬於系統程序 瀏覽:867
白銀人才市場在什麼位置 瀏覽:503
東莞有哪些出口越南產品 瀏覽:292
如何開發海產品和農產品 瀏覽:432
c盤哪些數據可以刪 瀏覽:619