关于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