鱼C论坛

 找回密码
 立即注册
查看: 2705|回复: 7

[争议讨论] 零基础学汇编 第八章 实验7 (作业)求优化方案

[复制链接]
发表于 2013-6-10 21:34:29 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 ┈━═☆佳佑 于 2013-6-10 21:38 编辑

这道作业题花了 两天时间做完  绞尽脑汁 都还没想到优化方案  希望高手给出优化意见
assume cs:codesg
data segment
     db '1975','1976','1977','1978','1979','1980','1981','1982','1983'  ;'4',0-35     
     db '1984','1985','1986','1987','1988','1989','1990','1991','1992'  ;36-71
     db '1993','1994','1995'                                                                   ;72-83
     ;以上表示21年的21个字byte型字符串
  
  dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514                   ;'4'84-131
  dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000   ;132-167
  ;以上表示21年公司的总收入的21个dword型数据
  
  dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226  ;'2'168-209
  dw 11542,14430,15257,17800
  ;以上表示21年公司雇员人数的21个word型数据
data ends
table segment
      db 21 dup('year summ ne ?? ')
table ends
codesg segment
  start:mov ax,data
        mov ds,ax
        mov ax,table
        mov es,ax
        mov si,0
        mov di,0
        mov bp,0
        mov cx,21
      s:mov bx,0
        mov ax,0
        mov al,[bx+si]    ;年份
        mov es:[bp+0],al
        inc si
        mov al,[bx+si]    ;年份
        mov es:[bp+1],al
        inc si      
        mov al,[bx+si]    ;年份
        mov es:[bp+2],al
        inc si
        mov al,[bx+si]    ;年份
        mov es:[bp+3],al
        inc si
  
        mov bx,80            ;年收入    si=4
        mov ax,[bx+si]
        mov dx,[bx+si+2]
        mov es:[bp+5],ax
        mov es:[bp+7],dx
  
        mov bx,168         ;雇员
        mov bx,[bx+di]
        mov es:[bp+10],bx
        inc di
        inc di
  
       div bx            ;平均人收入
       mov es:[bp+13],ax
  
       add bp,16
       loop s
  
        mov ax,4c00h
        int 21h
codesg ends
end start

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-10 21:44:47 | 显示全部楼层
抢个沙发  等待 高手  跟进 中......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-10 21:52:05 | 显示全部楼层
这道题本来就有些问题  误导了我 胡乱想了一天多是时间  
总收入  
公司雇员人数
平均人收入
这三项本来 定义的都是 十进制  放入寄存器后 就都是 十六进制了  再放入表格 也还是十六进制 怎么可能跟以下格式一样 都显示的是 十进制数
2222222222.jpg
1111111111.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-10 23:35:45 | 显示全部楼层
无回帖,不论坛,这才是人道。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-11 08:16:11 | 显示全部楼层
好,{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-12 04:05:28 | 显示全部楼层
本帖最后由 金色暢想犬舍 于 2013-6-12 04:09 编辑

我写的,很烂,凑合看看吧 ,顺便说一下,有没有学到第八章了的?共同交流下? QQ81881894{:1_1:}
  1. assume CS:code,DS:data,SS:stack

  2. data SEGMENT
  3.         db '1975','1976','1977','1978','1979','1980','1981','1982','1983' ;字节类型
  4.         db '1984','1985','1986','1987','1988','1989','1990','1991','1992' ;字节类型
  5.         db '1993','1994','1995' ;以上是表示21年的21个字符串 ;字节类型 BX+0~83(0~53H)
  6.         ;这一组数据用SI表示,这组偏移过后,SI指向下一组数据时,SI归零,重来 CX=15H

  7.         dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 ;双字类型
  8.         dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ;双字类型
  9.         ;以上是表示21年公司总收入的21个dword型数据 BX+84~168(就是54H~0A8),这一组21个数据,用SI表示
  10.         ;CX=15H

  11.         dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 ;字类型
  12.         dw 11542,14430,15257,17800 ;以上是表示21年公司雇员人数的21个WORD型数据 ;字类型
  13.         ;这一组21个数据,也用SI表示; CX=15H
  14.         dw 0,0
  15. data ends

  16. table SEGMENT
  17.         db 21 DUP ('year summ ne ?? ')
  18. table ends

  19. STACK segment
  20.         db 7 DUP ('year summ ne ?? ')
  21. STACK ends

  22. ;编程,将data段中的数据按图上格式写入到table段中,并计算21年终的人均收入(取整),结果也按照图上的
  23. ;格式保存在table段中;
  24. code SEGMENT
  25. start:                MOV AX,DATA
  26.                 MOV DS,AX
  27.                 MOV AX,TABLE
  28.                 MOV ES,AX
  29.                 MOV AX,STACK
  30.                 MOV SS,AX
  31.                 MOV SP,112

  32. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>年份&总收入收入开始>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  33.                 MOV CX,15H
  34. YEARMONEY:        MOV DS:[210],CX
  35.                 MOV CX,2
  36. YEARMONEY1:        MOV AX,[BX].0[SI]        ;将年份读入一个字
  37.                 MOV ES:[BP].0[DI],AX        ;将一个字的年份写入
  38.                 MOV AX,[BX].54H[SI]        ;将总收入读入一个字
  39.                 MOV ES:[BP].5[DI],AX        ;将总收入写入一个字
  40.                 PUSH AX                        ;将总收入,入栈;
  41.                 ADD SI,2
  42.                 ADD DI,2
  43.                 LOOP YEARMONEY1
  44.                 MOV BYTE PTR ES:[BP+4],' '
  45.                 MOV BYTE PTR ES:[BP+9],' '
  46.                 ADD BP,10H
  47.                 MOV DI,BX
  48.                 MOV CX,DS:[210]
  49.                 LOOP YEARMONEY
  50. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>年份&总收入结束>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  51. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>雇员人数&人均收入结束>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  52.                 MOV SI,2AH                ;退着走
  53.                 MOV BP,140H                ;BP也退着走,
  54.                 MOV DI,BX                ;DI清零
  55.                 MOV BX,0A6H                ;BX偏移了,就用不到IDATA了.
  56.                 MOV CX,15H                ;循环次数依然是21次
  57. S:                MOV AX,[BX+SI]                ;定位到最后一个雇员人数读入
  58.                 MOV ES:[BP+0AH],AX        ;将雇员人数写入对应字单元中;
  59.                 POP DX
  60.                 POP AX
  61.                 DIV WORD PTR ES:[BP+0AH]        ;除雇员人数-----
  62.                 MOV ES:[BP+0DH],AX        ;将人均收入写入指定字单元
  63.                 MOV BYTE PTR ES:[BP+0CH],' '        ;在写完雇员人数后写入一个空格
  64.                 MOV BYTE PTR ES:[BP+0FH],' '        ;在最后面写入一个空格
  65.                 SUB SI,2
  66.                 SUB BP,10H                ;BP每次-10,就是退一行
  67.                 LOOP S


  68.         MOV        AX,4c00h
  69.         INT        21h        
  70. code ENDS
  71. END start
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-12 04:10:37 | 显示全部楼层

显示十六进制就足够了,谁跟你说要显示10进制的,  十六进制的10H和十进制的16,其实表示出来不都是一个数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-24 20:31:54 | 显示全部楼层
持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-25 18:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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