彙編學習歷程 記憶體定位與資料拷貝

2021-06-13 13:43:17 字數 2515 閱讀 7375

;學習彙編的乙個比較綜合性的程式,將data段中的資料複製到table段中。並計算平均工資。

;程式如下:

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

data segment

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

db '1985','1986','1987','1988','1989','1990','1991','1992','1993','1994'

db '1995'

;以上是表示21年的21個字串,共84位元組,0-83

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

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

;以上是表示21年的總收入,共84個位元組,84-167

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

dw 11542,14430,15257,17800

;以上是21年公司的雇員數,共42個位元組,168-210

data ends

table segment

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

table ends

stack segment

dw 8 dup(0)

stack ends

code segment

start:

mov ax,data

mov ds,ax

mov ax,table

mov es,ax

mov ax,stack

mov ss,ax

mov sp,16 ;上面**實現各段與具體暫存器的關聯

;----------------------------------

mov si,0 ;相關暫存器清零操作

mov bx,0

mov di,0

mov cx,21 ;設定迴圈次數

year:

push cx ;保護迴圈計數,貌似這裡用不上

mov ax,word ptr ds:[si]

mov word ptr es:[bx + 0],ax

add si,2

mov ax,word ptr ds:[si]

mov word ptr es:[bx + 2],ax

add si,2

add bx,16

pop cx

loop year

;-----------------------------------以上**實現把年複製到table記憶體中

mov bx,0 ;相關暫存器清零操作

mov di,0

mov cx,21

sume:

push cx

mov ax,word ptr ds:[si]

mov word ptr es:[bx + 5],ax

add si,2

mov ax,word ptr ds:[si]

mov word ptr es:[bx + 7],ax

add si,2

add bx,16

pop cx

loop sume

;----------------------------------以上**實現把總收入複製到table記憶體中

mov bx,0 ;相關暫存器清零操作

mov cx,21

ne0:

push cx

mov ax,word ptr ds:[si]

mov word ptr es:[bx + 10],ax

add si,2

add bx,16

pop cx

loop ne0

;----------------------------------以上**實現把年度總人數複製到table記憶體中

mov bx,0

mov cx,21

con:

push cx

mov dx,word ptr es:[bx + 7]

mov ax,word ptr es:[bx + 5]

div word ptr es:[bx + 10]

mov word ptr es:[bx + 13],ax

add bx,16

pop cx

loop con

;-----------------------------------以上**實現求商指令

mov ax,4c00h

int 21h

code ends

end start

資料型別 記憶體與拷貝

靜態儲存 python是用c寫的,python裡的str也是用c寫的,但是c語言裡預設是沒有字串的,它使用的是字元陣列,這種陣列只要存在記憶體就固定占用一定記憶體,它是不可修改的。而使用replace 更改字串,實際上是又生成了另乙個新字串用作修改,初始的字串是不變的,它依然存放於記憶體裡。動態儲存...

組合語言學習筆記(7) 更靈活地定位記憶體

1 and指令 邏輯與指令,按位進行與運算,例如 mov al,01100011b and al,00111011b計算後的al結果為 00100011b 計算過程 0 1 1 0 0 0 1 1 b 0 0 1 1 1 0 1 1 b 0 0 1 0 0 0 1 1 b可以看出,邏輯與運算兩個二進...

資料分析與挖掘學習歷程3

先做描述性統計,分析離群點 如果資料服從正態分佈,則距離平均值3之外的值出現概率為p 0.003,為極小概率事件 異常值通常被定義為ql 1.5iqr或大於qu 1.5iqr的值 ql稱為下四分位數,表示全部觀察值中有四分之一資料比他小 qu稱為上四分位數,表示全部觀察值中有四分之一資料比他大 iq...