王爽 組合語言 實驗7

2021-05-26 07:40:58 字數 1583 閱讀 1451

assume cs:codesg,ds:data;,ss:stack

data segment

db        '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982' 

db        '1983', '1984', '1985', '1986', '1987', '1988', '1989', '1990' 

db        '1991', '1992', '1993', '1994', '1995' 

dd        16, 22, 382, 1356, 2390, 8000, 16000, 24486, 50065, 97479, 140417, 197514 

dd        345980, 590827, 803530, 118300, 184300, 2759000, 3753000, 4649000, 5937000 

dw        3, 7, 9, 13, 28, 38, 130, 220, 476, 778, 1001, 1442, 2258, 2793, 4037, 5635, 8226 

dw        11542, 14430, 15257, 17800 

data ends

table segment

db 21 dup('year summ ne ?? ')

table ends

;stack segment

; dw 8 dup(0)

;stack ends

codesg segment

start:mov ax,data

mov ds,ax

mov ax,table

mov es,ax

;mov ax,stack

;mov ss,ax

;mov sp,16

mov bp,0 ;用來指示一年的年份資料、總收入資料

mov si,0  ;用來指向公司雇員數

mov bx,0 ;用來指向table的年份資料、收入資料、雇員資料

mov cx,21

s:;複製年份

mov ax,ds:[bp]

mov es:[bx],ax

mov ax,ds:[bp+2]

mov es:[bx+2],ax

;複製收入 同時計算人均收入

mov ax,ds:[bp+54h]

mov dx,ds:[bp+56h]

mov es:[bx+5],ax

mov es:[bx+7],dx

div word ptr ds:[si+168]

mov es:[bx+0dh],ax  ;得商

;複製雇員數

mov ax,ds:[si+168]

mov es:[bx+0ah],ax

;至此資料處理完畢 為進入下一迴圈做準備

add bx,10h

add bp,4h

add si,2h ;注意這裡si與bp增長不同

loop s

mov ax,4c00h

int 21h

codesg ends

end start

王爽《組合語言》實驗7

因為實驗7中的資料太多,我就對其縮減了一些。因為其中用到很多的暫存器,但是每個暫存器都有限制規則,所以要精心分配暫存器。最先分配的是兩個段暫存器,data用ds存放,table用es存放。然後要確定迴圈使用的暫存器cx 乙個指向table位址的暫存器bp,乙個指向年份和收入的暫存器di,乙個指向雇員...

王爽 組合語言 實驗10 1

assume cs code,ds data data segment db welcome to masm 0 data ends code segment start mov dh,8 行號 mov dl,3 列號 mov cl,2 顏色 mov ax,data mov ds,ax mov si...

王爽 組合語言 實驗9

assume cs code data segment db welcome to masm db 00000010b,00100100b,01110001b data ends code segment start mov ax,data mov ds,ax mov si,07c0h 臨時,可調整...