第1个回答 2015-08-28
DATAS SEGMENT
DATA DW 102,90,67,89,98,125
NUMB1 DW 0
NUMB2 DW 0
NUMB3 DW ?
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA DI,DATA ;将数据段首地址赋值给DI
MOV CX,6 ;一周工作6天
LOOP1:
MOV AX,[DI] ;取得一天送快递件数
CMP AX,80 ;检测完成任务情况
JLE LOOP2 ;若AX小于或等于80,则跳转到LOOP2
SUB AX,80 ;计算超额数量
MUL 15 ;计算超额工资
ADD AX,NUMB1 ;累计超额工资
MOV NUMB1,AX ;超额工资不会超过65535,DX不用管
INC DI ;指针加一
LOOP LOOP1 ;循环L00P1,直到CX==0成立
LOOP2:
MOV AX,80
SUB AX,[DI]
MUL 12 ;计算扣除工资
ADD AX,NUMB2 ;累计扣除工资
MOV NUMB2,AX ;超额工资不会超过65535,DX不用管
INC DI ;指针加一
LOOP LOOP1 ;循环L00P1,直到CX==0成立
MOV AX,NUMB1 ;总超额工资
ADD AX,6000 ;加基本工资,保留一位小数
SUB AX,NUMB2 ;减总扣除工资
MOV NUMB3,AX ;存储总工资
MOV AH,4CH ;带返回码结束功能
INT 21H ;返回系统
CODES ENDS
END START本回答被网友采纳