|
发表于 2019-8-9 11:30:52
|
显示全部楼层
本帖最后由 jackz007 于 2019-8-9 13:30 编辑
楼主的精简使用了很多固定偏移,从而显著降低了代码的可读性、灵活性和可维护性,由此带来的问题也很明显,逻辑线索不够清晰,代码容易出错,查找问题相对困难等等,个人认为得不偿失。
- ASSUME CS:CODE,DS:DATA,ES:TABLE,SS:STACK
- DATA SEGMENT PARA PUBLIC 'DATA'
- DB '1975','1976','1977','1978','1979','1980','1981','1982','1983'
- DB '1984','1985','1986','1987','1988','1989','1990','1991','1992'
- DB '1993','1994','1995'
- ;年份
-
- DD 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
- DD 345980,590827,803530,1183000,184300,2759000,3753000,4649000,5937000
- ;收入
-
- DW 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
- DW 11542,14430,15257,17800
- ;雇员数量
- DATA ENDS
- TABLE SEGMENT PARA PUBLIC 'TABLE'
- DB 21 DUP ('year summ ne ?? ')
- TABLE ENDS
- STACK SEGMENT STACK
- DW 0800H DUP(00)
- STACK ENDS
- CODE SEGMENT
- MAIN PROC FAR
- MOV AX,DATA
- MOV DS,AX
- MOV AX,TABLE
- MOV ES,AX
- CLD
- XOR SI,SI
- XOR BX,BX ; 传递年份
- MOV CX,21
- M1: XOR DI,DI
- ADD DI,BX
- MOVSW
- MOVSW
- ADD BX,16
- LOOP M1
- XOR BX,BX ; 传递雇员数
- MOV CX,21
- M2: MOV DI,5
- ADD DI,BX
- MOVSW
- MOVSW
- ADD BX,16
- LOOP M2
- XOR BX,BX ; 传递收入
- MOV CX,21
- M3: MOV DI,10
- ADD DI,BX
- MOVSW
- ADD BX,16
- LOOP M3
- XOR BX,BX ; 计算人均收入
- MOV CX,21
- M4: MOV SI,5
- ADD SI,BX
- MOV AX,ES:[SI]
- MOV DX,ES:[SI + 2]
- DIV WORD PTR ES:[SI + 5]
- MOV WORD PTR ES:[SI + 8],AX
- ADD BX,16
- LOOP M4
- MOV AX,04C00H
- INT 021H
- MAIN ENDP
- CODE ENDS
- END MAIN
复制代码 |
|