各位高手请帮我编一下汇编程序

2025-02-25 18:28:51
推荐回答(1个)
回答1:

这个分段函数有缺项。若用户正好用了5立方的水,怎么收费啊?应该把Y=X*70 X<5改成Y=X*70 X<=5

; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
DATA1 dw 04H,10H,18H,0FH,13H,07H,21H,16H,0AH,34H
Elements equ ($-DATA1)/type DATA1 ;用水量数据个数
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
lea si,DATA1 ;用水量数据地址
mov di,si
mov cx,Elements ;用水量数据个数
cld
calculate: lodsw ;读入一个用户的用水量
mov bl,70 ;预置水价
cmp ax,5
jbe Water_Rate ;若X<=5,Y=X*70
mov bl,150 ;预置水价
cmp ax,20
ja Water_Rate ;若X>20,Y=X*150
mov bl,100 ;预置水价
Water_Rate: mul bl ;计算水费
stosw ;保存水费
loop calculate ;下一个用户
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束