QWERT?SEGMENT
TOTAL?DW6000;金額數,?皆乘10
HHHDW15?;以便包容壹位小數
LLLDW12
STAND?DW80
XXXDW102,?90,?67,?89,?98,?125
QWERT?ENDS
;========================================
ZXCVBSEGMENT
ASSUMECS:?ZXCVB,?DS:QWERT
START:
MOVAX,?QWERT
MOVDS,?AX
;--------------------------------
MOVSI,?0
MOVCX,?6
L1:?MOVAX,?XXX[SI]?
SUBAX,?STAND
JBL2
MULHHH
JMPL3
L2:?NEGAX
MULLLL
NEGAX
L3:?ADDTOTAL,?AX
INCSI
INCSI
LOOP?L1
;------------------計算完畢,下面是顯示
MOVAX,?TOTAL
MOVBX,?10
MOVDX,?0
DIVBX?;除以10,?變成真正的金額數
PUSH?DX?;保存小數
CALL?DISP
MOVAH,?2
MOVDL,?'.'
INT21H
POPDX?;恢復小數
ADDDL,?'0'
MOVAH,?2;顯示小數
INT21H
EXIT:
MOVAH,?4CH;結束程序
INT21H?
;----------------------------------
DISPPROCNEAR
MOVBX,?10
MOVCX,?0
DI1:MOVDX,?0
DIVBX
PUSH?DX
INCCX
CMPAX,?0
JNZDI1
MOVAH,?2
DI2:POPDX
ADDDL,?'0'
INT21H
LOOP?DI2
RET
DISPENDP
;----------------------------------
ZXCVBENDS
ENDSTART
;----------------------------------
本程序經過實驗,可以滿足題目要求。
程序運行的結果是 740.4,和人工計算結果相同。