汇编语言 第四版 王爽 试验7 - 一个循环搞定

assume cs:codesg

data segment
    ; 年份起始地址 0
    db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
    db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
    db '1993','1994','1995'
    ; years   4 bytes

    ; 收入起始地址 4 * 21 = 84
    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
    dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
    ; income  4 bytes

    ; 雇员人数起始地址 84 + 4 * 21 = 168
    dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
    dw 11542,14430,15257,17800
    ; employee count    2 bytes
data ends
table segment
    db 21 dup('year summ ne ?? ')
table ends

codesg segment
    start:  mov ax,data
            mov ds,ax   ; data 段

            mov ax,table
            mov es,ax   ; table 段

            mov cx,21   ; loop count
            
            mov bx,0    ; 年份偏移地址
            mov si,84   ; 收入偏移地址
            mov di,168  ; 雇员偏移地址
            mov bp,0    ; table地址

        s:  mov ax,ds:[bx]  ; 年份
            mov es:[bp],ax
            mov ax,ds:[bx+2]
            mov es:[bp+2],ax

            mov ax,ds:[si]   ; 收入
            mov es:[bp+5],ax
            mov dx,ds:[si+2]
            mov es:[bp+7],dx
            div word ptr ds:[di] ; 人均
            mov es:[bp+0dh],ax   ; 写入人均

            mov ax,ds:[di]  ; 雇员数
            mov es:[bp+0ah],ax

            add bx,4
            add si,4
            add di,2
            add bp,10h
            loop s

            mov ax,4c00h
            int 21h
codesg ends
end start
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值