汇编语言实验七


写的不好,仅供参考。

数据

assume cs:codesg,ds:datasg

datasg 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'
    ;年份:4*21=84byte,00h-53h

    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
	dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
    ;收入:4*21=84byte,54h-a7h

    dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
	dw 11542,14430,15257,17800
    ;人数:2*21=42byte,a8h-d1h
datasg ends

table segment
    db 21 dup('year summ ne ?? ')
table ends

在这里插入图片描述

方法一:四个循环分别处理

描述:将年份,收入,人数,和平均数分别复制到table段

codesg segment
start:
    mov ax,datasg                               ;初始化数据段
    mov es,ax

    mov ax,table                                ;初始化表格段寄存器
    mov ds,ax

    mov bx,0
    mov si,0
    mov cx,21
year:                                           ;先保存年份
    mov ax,es:[si]
    mov [bx].0h,ax
    add si,2
    mov ax,es:[si]
    mov [bx].2h,ax
    add si,2
    add bx,16
    loop year

    mov bx,0
    mov si,0
    mov cx,21
income:                                         ;保存收入
    mov ax,es:[si].54h
    mov [bx].5h,ax
    add si,2
    mov ax,es:[si].54h
    mov [bx].7h,ax
    add si,2
    add bx,16
    loop income

    mov bx,0
    mov si,0
    mov cx,21
population:                                     ;保存人数
    mov ax,es:[si].0a8h
    mov [bx].0ah,ax
    add si,2
    add bx,16
    loop population

    mov bx,0
    mov si,0
    mov cx,21
average:
    mov ax,es:[si].54h
    add si,2
    mov dx,es:[si].54h
    add si,2
    div word ptr [bx].0ah
    mov [bx].0dh,ax
    add bx,16
    loop average

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

方法二:一个循环每次一行

描述:si记录年份和收入的数据位置,因为每个数据项都是4byte,每次加2依次将数据复制到table里面,每次循环加4;di记录人数的数据位置,每个数据项都是2byte,每次循环加2.

codesg segment
start:
    mov ax,datasg
    mov es,ax

    mov ax,table
    mov ds,ax

    mov bx,0
    mov si,0                    ;初始化年份和收入数据位置
    mov di,0                    ;初始化人数数据位置
    mov cx,21
s:  
    mov ax,es:[si]              ;年份和收入低16bit
    mov [bx].0h,ax
    mov ax,es:[si].54h
    mov [bx].5h,ax
    add si,2

    mov ax,es:[si]              ;年份和收入高16bit
    mov [bx].2h,ax
    mov ax,es:[si].54h
    mov [bx].7h,ax
    add si,2

    mov ax,es:[di].0a8h         ;人数2byte
    mov [bx].0ah,ax
    add di,2
    
    mov ax,[bx].5h              ;被除数的低16bit
    mov dx,[bx].7h              ;被除数的高16bit
    div word ptr [bx].0ah       ;32bit/16bit的除数
    mov [bx].0dh,ax             ;将平均数保存在table中
    
    add bx,16
    loop s

    mov ax,4c00h
    int 21h

codesg ends
end start

结果

在这里插入图片描述
继续考研复习去了0.0

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值