鱼C论坛

 找回密码
 立即注册
查看: 2398|回复: 0

[争议讨论] 实验7代码,大家来看看,优化优化

[复制链接]
发表于 2012-1-11 20:06:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 
assume cs:code, ds:data, es:table, ss:stack
data segment
 db '1975', '1976', '1977', '1978', '1979', '1980'
 db '1981', '1982', '1983', '1984', '1985', '1986'
 db '1987', '1988', '1989', '1990', '1991', '1992'
 db '1993', '1994', '1995'
 ;以上是表示21年的21个字符串
 
 dd 16, 22, 382, 1356, 2390, 8000   ;偏移84
 dd 16000, 24486, 50065, 97479, 140417, 197514
 dd 345980, 590827, 803530, 1183000, 1843000, 2759000
 dd 3753000, 4649000, 5937000
 ;以上是表示21年公司总收入的21个dword型数据
 
 dw 3, 7, 9, 13, 28, 38      ;偏移A8
 dw 130, 220, 476, 778, 1001, 1442
 dw 2258, 2793, 4037, 5635, 8226, 11542
 dw 14430, 15257, 17800
 ;以上是表示21年公司雇员人数的21个word型数据
data ends
table segment
 db 21 dup ('year summ ne ?? ')
table ends
stack segment
 
 dw 8 dup(0)
 
stack ends
code segment
start: mov ax, data
  mov ds, ax  ;设置数据段为原数据所在处
  mov ax, table
  mov es, ax  ;设置附加段为目标数据所在处
  mov ax, stack
  mov ss, ax  ;程序中使用的栈空间
  mov sp, 10H  ;设置栈顶指针
  mov bx, 0
  mov si, 0
  mov di, 0
  mov bp, 0
  
  mov cx, 21  ;设置循环,21次
 s: push cx   ;将循环变量压入栈中,以便使用cx寄存器
  mov ax, ds:[bp+0A8H]  ;取得员工数
  mov es:0AH[bx][si], ax
  mov dx, [di+056H]  ;将总收入的高16位送到dx
  mov ax, [di+054H]  ;将总收入的低16位送到ax
  div word ptr es:0AH[bx][si]  ;计算平均收入
  mov es:0DH[bx][si], ax ;将商送入指定位置
  
  mov cx, 2
 s1: mov ax, [di+84]   ;此处循环将年份和总收入送到目标地址
  mov es:05H[bx][si], ax
  mov ax, [di]
  mov es:[bx][si], ax
  add di, 2
  add si, 2
  loop s1
  
  pop cx   ;将循环变量出栈
  add bp, 2
  add si, 12
  loop s
  
  mov ax, 4c00H
  int 21H
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 16:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表