1625-5 王子昂 總結《2023年4月7日》 【連續第188天總結】
a.彙編第八章實驗100%
b.題:將給定的定義好的資料重新按格式寫入指定table段中,並計算21年中的人均收入
乍一看還是有點懵的,彙編的結構太混亂了。或者說太簡單了,全部由暫存器和記憶體單元構成。
慢慢理清思路,由於年份和總收入都佔4個位元組,而人數只佔2個位元組,因此不可能同用乙個暫存器來表示(因為長度不定)
那麼年份和總收入使用同乙個暫存器來指向,人數單獨使用另乙個暫存器來指向。每次迴圈以後對兩個暫存器分別增加乙個資料長度,同時令table段的指標增加16位即可。
所犯的錯:
附加段暫存器,即需要另外使用的段暫存器要使用es。es不可以直接與立即數發生關係,它只能由通用暫存器賦值
通用暫存器ax,dx在除法div命令時需要使用,因此不可作為跨越迴圈的變數;bx則是指向記憶體的暫存器,相當於指標;cx是迴圈計數作用。它們都有各自的作用,如果需要大量臨時儲存的值,開闢乙個記憶體空間通過棧來使用
本題暫不需要,暫存器勉強足夠使用。
**:assume cs:codesg,es: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'
;年份dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,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
codesg segment
start:mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov cx,21
;資料初始化
mov bx,0
mov si,168
;bx作為年份和總收入的指標,si作為雇員人數的指標
l:mov ax,[bx]
mov es:[0],ax
;把每組資料的年份的前兩個位元組送入**段,下同,分別是總收入的前兩個位元組、年份的後兩個位元組、總收入的後兩個位元組、雇員數,除法得到人均收入並送入**段
mov ax,[bx+84]
mov es:[5],ax
add bx,2
mov ax,[bx]
mov es:[2],ax
mov ax,[bx+84]
mov es:[7],ax
mov ax,[si]
mov es:[10],ax
mov ax,es:[5]
mov dx,es:[7]
div word ptr es:[10]
mov es:[13],ax
mov ax,es
inc ax
mov es,ax
add bx,2
add si,2
loop l
mov ax,4c00h
int 21h
codesg ends
end start
debug中,右側顯示ascii碼的結果,而不是值。因此在本題中只能用來檢查年份,收入、雇員數和人均收入的值都是以16進製制的形式儲存在記憶體中,需要自行計算檢查。
c.明日計畫
彙編第九章
實驗7 綜合練習
求 1 2 3 3 5 4 7 5 9 的前15項之和。1 include 2 void main 3 12 printf s f n s 後面輸出的是s,前面要寫出s的格式,浮點型 13 輸入10個整數,將它們從大到小排序後輸出 1 include 2 void main 3 16 printf ...
實驗 7 綜合練習 New
習題 一 填空 閱讀下列程式說明和程式,在可選答案中,挑選乙個正確答案。填補 1 2 3 4 處空白,並注釋說明為什麼。include void main printf sum f n s 用的是 f 二 填空 閱讀下列程式說明和程式,在可選答案中,挑選乙個正確答案。填補 1 2 3 4 處空白,並...
實驗5 8 綜合練習
實驗目的 進一步掌握迴圈結構的用法。實驗步驟 1.計算n!n 10000 的末尾有多少個零。1.1分析 可分二步。第一步求出n!存入變數fac中。第二步判斷fac的末尾有多少個零。測試資料。變數n的輸入值 預期的輸出 估計好多 估計好多 實驗的輸出 1.2分析 沒有必要非得求出n!以10!為例,把每...