《汇编语言》王爽版实验七

关于div除法指令,需要注意的问题:

1. 除数:有8位和16位两种,在一个reg或内存单元中

2. 被除数:默认放在AX,或DX和AX中

     如果除数是8位,被除数则为16位,默认放在AX中存放;

     如果除数位16位,被除数则为32位,DX存放高16位,AX存放低16位

3. 结果:如果除数位8位,则AL存储商,AH存储余数;

    如果除数位16位,则AX存储商,DX存储余数

 

assume cs:codesg

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年的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年公司总收入的21个dword型数据

    dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
    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 bx,0
    mov si,0
    mov di,0
    mov cx,21

s:
    mov ax,ds:[bx]      ;复制年份
    mov es:[si],ax
    mov ax,ds:[bx+2h]
    mov es:[si+2h],ax

    mov ax,ds:[bx + 54h]    ;复制收入
    mov es:[si + 5h],ax
    mov ax,ds:[bx + 56h]
    mov es:[si + 7h],ax

    mov ax,ds:[di + 00a8h]  ;复制雇员数
    mov es:[si + 000ah],ax

    mov ax, ds:[bx + 54h]             ;计算平均值并将结果存入table
    mov dx, ds:[bx + 56h]               ;低位放在ax,高位放在dx
    div word ptr ds:[di + 00a8h]
    mov es:[si + 000dh],ax

    add bx, 4h
    add si, 10h
    add di, 02h

    loop s

    mov ax, 4c00h
    int 21h

codesg ends
end start

 

转载于:https://www.cnblogs.com/zhaijiayu/p/11485012.html

你可能感兴趣的:(《汇编语言》王爽版实验七)