. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->数据处理的两个基本问题
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验七中不会解决雇员数的循环。  [待解决] 回复[ 2次 ]   点击[ 528次 ]  
caoheqian
[帖 主]   [ 发表时间:2007-11-04 17:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-09-30 21:53
有谁可以简单地讲解一下解题思路??
caoheqian
[第1楼]   [ 回复时间:2007-11-04 18:26 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-09-30 21:53
assume cs:code

data segment  
  db '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982', '1983', '1984'  
  db '1985', '1986', '1987', '1988', '1989', '1990', '1991', '1992', '1993', '1994'  
  db '1995'  
  dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514  
  dd 345980,590827,803530,1183000,1843000,2759000,3753000,4694000,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 ;10
 
table segment  
  db 21 dup ('year summ ne ?? ')  
table ends

stack segment
  dw 8 dup (' ')
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,16
mov dx,0
mov bx,0
mov cx,21
s:
push cx
push dx


mov si,0
mov di,0
mov cx,4
s1:
  mov al,ds:[bx+si]
  mov es:[bp+di],al 
  inc si
  inc di
loop s1

mov si,0
mov di,0
mov cx,2
s0:
  mov ax,ds:[bx+si+054h]
  mov es:[bp+di+5],ax 
  add si,2
  add di,2
loop s0

add bx,4
add bp,16
pop cx
loop s
;以上先导入年份和收入数据。

mov bx,0
mov bp,0
mov cx,21
s2:
;push cx
mov ax,ds:[bx+0a8h]
mov es:[bp+0ah],ax

mov ax,es:[bp+5]
mov dx,es:[bp+7]
div word ptr es:[bp+0ah]
mov es:[bp+0dh],ax

add bx,2
add bp,16
;pop 
loop s2
;以上导入雇员,并计算人均收入

mov ax,4c00h
int 21h
code ends  
end start

;--------------
;变通了一下,总算做完了。
caoheqian
[第2楼]   [ 回复时间:2007-11-04 19:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-09-30 21:53
assume cs:code  

data segment  
    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,2369,8000,16000,24486,50065,97479,140417,197514  
    dd 345980,590872,803530,1183000,1843000,2759000,3753000,4649000,59307000  

    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 
  db 21 dup ('year summ ne ?? ') 
table ends 

code segment  
start:  
    mov ax,data  
    mov ds,ax  
    mov bx,0  
    mov si,168  
mov di,0     
mov ax,table 
    mov es,ax 
    mov cx,21  
s:  
    mov ax,[bx]  
    mov es:[di],ax  
    mov ax,[bx+2]  
    mov es:[di+2],ax  
    mov ax,[bx+84]  
    mov es:[di+5],ax  
    mov dx,[bx+86]  
    mov es:[di+7],dx  
    div word ptr [si]  
    mov dx,[si]  
    mov es:[di+10],dx  
    mov es:[di+13],ax  
    add si,2  
    add bx,4  
    add di,16  
    loop s  
    mov ax,4c00h  
    int 21h  
code ends  
end start  

;改编了一下,最简洁的方法。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved