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

如何定義一個匯編程序段

發布時間: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,也叫「平棧」。

閱讀全文

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

熱點內容
電表換個名字需要什麼程序 瀏覽:29
江蘇有什麼電流測量儀表代理商 瀏覽:63
套數據用的公式有哪些 瀏覽:419
設計引流產品怎麼做 瀏覽:853
哪裡有古老古董市場 瀏覽:807
百色東盟農貿市場是哪個公司投資 瀏覽:71
情侶空間小程序入口蘋果怎麼進 瀏覽:641
開拓市場怎麼那麼難 瀏覽:825
學生注冊企業微信程序是什麼 瀏覽:159
回信息一個嗯和嗯嗯有什麼區別 瀏覽:457
日本的內燃機車市場什麼樣子的 瀏覽:654
相冊製作小程序怎麼做 瀏覽:556
怎麼樣用ug設計產品 瀏覽:740
如何一個表的數據導到另一個表裡 瀏覽:42
倉庫保管技術有哪些 瀏覽:349
申請離婚的程序有什麼風險 瀏覽:502
茅台代理商有多少家 瀏覽:590
交易賬單怎麼審核 瀏覽:913
騰訊朋友圈廣告代理商有哪些 瀏覽:147
區域性保險代理怎麼升級成全國性 瀏覽:181