王爽彙編第三版 實驗七

2021-08-11 01:13:44 字數 2199 閱讀 7124

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

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'

;db 位元組型資料,這裡'1975'不是我們所理解的十進位制1975而是字串

;所以每個年份佔4個位元組,總共佔了21*4=84個位元組

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

dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

;db(dword)佔4位元組,所以收入佔了21*4=84位元組

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

dw 11542,14430,15257,17800

;dw 每個資料佔2個位元組,共佔21*2=42位元組

data ends

table segment

db 21 dup ('year summ ne ?? ') ;引號裡的字母無所謂後面會被覆蓋這裡只是提示錄入的是什麼資訊

table ends

code segment

start: mov ax,data

mov ds,ax ; ds:0指向data中的第乙個資料

mov ax,table

mov es,ax

mov bx,0

mov si,0

mov di,0 ;原來我也想過用棧,但是入棧是反向存入資料,不對,我也不知道用幾個暫存器

;先定義這麼多,多退少補

mov cx,21 ;因為有21行table,其實這一道題也就是湊每一行的內容,然後其他行都是迴圈得到

s: mov ax,[bx]

mov es:[si],ax ;將ds:[bx]的資料放入es:[si]中

mov ax,[bx+2]

mov es:[si+2],ax ;到這裡'1975'放入table第一行它的位置,下面是放空格

mov byte ptr [si+4],20h ;看書上**可以知道這是第5個位置所以是si+4,ascii碼空格是20h

mov ax,[bx+84] ;因為收入的資料放在ds:84

mov es:[si+5],ax

mov ax,[bx+86]

mov es:[si+7],ax ;年收入的資料錄入了,下面是空格

mov byte ptr [si+9],20h ;因為ax佔兩個位元組所以是si+9

mov ax,[di+168] ;原本這裡我寫的是[bx+168],但是迴圈到下一行你會發現年份和收入和下乙個資料的間隔是4個位元組

mov es:[si+10],ax ;但是雇員數間隔是dw型資料,只有兩個位元組,所以不能用bx表示了

mov byte ptr [si+12],20h

mov ax,[bx+84]

mov dx,[bx+86] ;因為收入是db資料,所以用ax存放低位,dx存放高位資料

divword ptr es:[si+10] ;用dx:ax中的資料除以ds:[di+168]中的資料

mov es:[si+13],ax ;因為商存在ax中,所以把ax中的資料轉到es:[si+13]中

;第一行資料錄入完了,開始下一行,然後看還有哪些資料是需要改動的,哪些是固定不變的

add bx,4 ;bx表示下乙個db型別的資料,所以加4

add di,2 ;di表示dw型資料

add si,10h ;表示將es指向下一行資料首位址

王爽《組合語言(第三版)》 實驗七

萌新學彙編 邊學邊練 以下是實驗七的練手 assume cs codesg,ss stack data segment db 1975 1976 1977 1978 1979 1980 1981 1982 1983 db 1984 1985 1986 1987 1988 1989 1990 1991...

組合語言 第三版 王爽 實驗七 獨立完成

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 以上是表示2...

《組合語言》王爽第三版 實驗9

datas segment 此處輸入資料段 db w 00000010b,e 00000010b,l 00000010b,c 00000010b,o 00000010b db m 00000010b,e 00000010b,0,t 00100100b,o 00100100b,0 db m 01110...