/ASM _ c/blog/static/2482031132015581028111
使用子程序,會比較麻煩,如下:
數據段
ARRAY1?DW?0,?-1,?2,?3,?4,?-5,?6,?-7,?8?,?9,?-10
數數?EQU?$?-?數組1
ARRAY2?DW?20?DUP(?);找到絕對值後存儲的新數組。
LENDW新數組長度?
MSG1DB?13,?10,?之前?排序?:?$'
MSG2DB?13,?10,?AfterSort?:?$'
數據?結束
代碼?段
假設?CS:?碼,?DS:?數據
開始:
MOVAX,?數據?
MOVDS,?削減
MOVAH,?09H
LEADX,?MSG1
INT21H?;顯示提示字符串MSG1
蕾斯?數組1
打電話?輸出;調用輸出數組子例程OUTPUT來顯示原始數據。
打電話?絕對?;調用Absolute子例程來求絕對值。
打電話?排序?;調用排序子例程sort對數組進行排序。
MOVAH,?09H
LEADX,?MSG2
INT21H?;顯示提示字符串MSG2?
蕾斯?數組2
打電話?輸出;調用輸出數組子程序OUTPUT來顯示求絕對值後的數據?
退出:
MOVAH,?4CH
INT21H?;主程序返回DOS
;- ?
;子程序名:排序
;功能:?
排序?PROC?附近?
;請在此添加代碼。
MOVCX,?數數
SHRCX,?1
DECCX
S0:?推?CX
莫夫迪,?國際度量單位制
S1:?MOVAX,?[迪]
CMPAX,?【迪?+?2]
JAS3
XCHG?AX,?【迪?+?2]
XCHG?AX,?[迪]
S3:?ADDDI?2
循環?S1
POPCX
循環?S0?
浸水使柔軟
排序?ENDP
;- ?
;子程序名:絕對
;功能:求絕對值?
絕對?PROC?近的
;請在此添加代碼。
蕾斯?數組1
LEADI?數組2
MOVCX,?數數
SHRCX,?1
ABS:
MOVAX,?[西]
CMPAX,?0
JGEABS2
NEGAX
ABS2:
MOV[迪],?削減
ADDSI?2
ADDDI?2
循環?防抱死制動裝置
浸水使柔軟
絕對?ENDP?
;- ?
;子程序名:輸出
;功能:輸出數組
輸出?PROC?附近?
;請在此添加代碼。
MOVAH,?2
MOVDL,?13
INT21H
MOVDL,?10
INT21H
MOVCX,?數數
SHRCX,?1
ZH3:
MOVAX,?[西]
CMPAX,?0
JGEZH0
NEGAX
MOV[SI],?削減
MOVAH,?2
MOVDL,?'-'
INT21H
ZH0:MOVAX,?[西]
MOVBX,?10
推?CX
MOVCX,?0
ZH1:MOVDX,?0
DIVBX
ADDDL,?'0'
推?高級的(deluxe的簡寫)
INCCX
CMPAX,?0
JNZZH1
MOVAH,?2
ZH2:POPDX
INT21H
循環?ZH2
POPCX
MOVDL,?'?'
INT21H
ADDSI?2
循環?ZH3
浸水使柔軟
輸出?ENDP
;-
共端
結束開始