【汇编语言(第3版)王爽】试验7 寻址方式在接过话数据访问中的应用(代码+注释)

assume cs:codesg, es:table , ds:data

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'
    ;21个年份
    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
    dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
    ;21个被除数
    dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
    dw 11542,14430,15257,17800
    ;21个除数
data ends

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

codesg segment
start:
    ;将data段与ds关联
    mov ax,data
    mov ds,ax
    ;将table段与es关联
    mov ax,table
    mov es,ax
    ;用bx定位到被除数
    mov bx,84
    ;用di定位到table表
    mov di,0
    
    
    mov cx,21
s:    ;将data中的日期复制到table中的year
    mov ax,ds:[bx-84]
    mov es:[di],ax
    mov ax,ds:[bx-82]
    mov es:[di+2],ax
    ;被除数
    mov ax,ds:[bx]
    mov dx,ds:[bx+2]
    ;除法,除完之后商存在ax中
    div word ptr ds:[bx+84]
    ;将商复制到table中??处
    mov es:[di+13],ax
    ;一个双字是4字节
    add bx,4
    ;table中一行是16字节
    add di,16
    loop s
    
    mov ah,4ch
    int 21
    
codesg ends
end start

 

posted @ 2018-01-19 21:54  ninding  阅读(190)  评论(0编辑  收藏  举报