計算機處理資料時有兩個基本問題:
1】處理的資料在什麼地方;
2】要處理的資料有多長;
1.bx、si、di、bp
在8086cpu中只有這四個暫存器可以用在「[...]」中,用來表示偏移位址;
1)bx
bx預設與段暫存器ds關聯,用來表示資料段的偏移位址;
bx可以與si或di組合使用;
mov ax,[bx+si]
mov ax,[bx+di]
mov ax,[bx+si+5]
但si和di不能同時使用;
bx無法和bp混合使用;
2)bp
bp預設與段暫存器ss關聯,用來表示棧段的偏移位址;
bp也可與si或di混合使用;
例如:將棧頂的值賦給ax
mov ax,[bp]
3)指定段暫存器
如果顯式指定段暫存器,則bx也可用作棧段的偏移位址,bp也一樣;
例如:mov ax,ss:[bx]
2.機器指令處理的資料在哪
絕大多數機器指令都是進行資料處理的指令;
處理大致分為3類:讀取、寫入、運算;
機器指令不關心資料的值,只關心指令執行前一刻,將要處理的資料位置;
資料可能在3個地方:cpu內部、記憶體、埠;
如圖:1)資料位置的描述
組合語言用3個概念來表達資料的位置:
1】立即數(idata) ->直接包含在機器指令中的資料; 執行前保持在cpu指令緩衝器;在彙編指令中直接給出數值;
mov ax,1
2】暫存器 ->資料儲存在暫存器中;在彙編指令中給出暫存器名;
mov ax,bx
3】段位址(sa)和偏移位址(ea) ->資料儲存在記憶體中;以"[x]"給出ea,sa在某個段暫存器中;
mov ax,[bx]
mov ax,ss:[bx]
2)定址方式
當資料存放在記憶體中時,有多種方式給定記憶體單元的偏移位址;定位記憶體單元的方式稱為定址方式;
常用的定址方式:
3.指令要處理的資料有多長
8086cpu可以處理兩種尺寸的資料:byte、word;
因此在機器指令中要指定是位元組操作還是字操作;
1)通過暫存器名指定資料尺寸
例如:暫存器ax是16位,操作的是字
mov ax,1
而ax的低位暫存器al是8位,執行的是位元組操作
mov al,1
2)使用 x ptr
在沒有暫存器名存在的情況下,可用 x ptr 來指定記憶體單元的長度
x 表示 byte 或 word;
例如:mov word ptr ds:[0],1
inc byte ptr [bx]
3)其他方法
例如棧中只能操縱字,如果是push指令,則必定是字
push [1000h]
4.定址方式的靈活使用
例如:修改下圖中的某幾個資料
**:mov ax,seg
mov ds,ax
mov bx,60h
mov word ptr [bx+0ch],38
add word ptr [bx+0eh],70
mov si,0
mov byte ptr [bx+10h+si],'s'
inc si
mov byte ptr [bx+10h+si],'c'
inc si
mov byte ptr [bx+10h+si],'v'
5.div指令
div指令用作除法;
1)除數 ->有8位和16位兩種,在暫存器或記憶體單元中;
2)被除數 ->如果除數為8位,則被除數為16位,預設放在ax中;
->如果除數為16位,則被除數為32位,dx中存放高16位,ax中存放低16位;
3)結果 ->如果除數為8位,al儲存商,ah儲存餘數;
->如果除數為16位,ax儲存商,dx儲存餘數;
例如:計算100001/100
mov dx,1
mov ax,86a1h
mov bx,100
div bx
執行完成後,ax的值為03e8h(1000),dx的值為1
6.偽指令dd
定義資料的偽指令:
db ->definebyte,定義位元組型資料;
dw ->defineword,定義字型資料;
dd ->definedoubleword,定義double型資料,double型資料佔兩個字的空間;
例如:在除法運算中使用偽指令dd
data segment
dd 100001
dw 100
dw 0
data ends
...mov ax,data
mov ds,data
mov ax,ds:[0]
mov dx,ds:[2]
div word ptr ds:[4]
mov ds:[6],ax
7.偽指令dup
dup的作用:和db、dw、dd等定義資料的偽指令配合使用,進行資料的重複;
格式:定義資料偽指令 重複次數 dup (重複的資料)
例如:定義3個值都是0的byte型資料
db 3 dup (0)
相當於db 0,0,0
定義9個byte型資料
db 3 dup (0,1,2)
相當於db 0,1,2,0,1,2,0,1,2
dup可以用來定義棧段,以簡化**量;
例如不用dup時,定義棧段
stack segment
dw 0,0,0,0
dw 0,0,0,0
dw 0,0,0,0
stack ends
使用dup時
stack segment
dw 12 dup (0)
stack ends
關於資料處理
1.使用者提供了乙份學生異動資料。分析 a.在系統裡面學生所對應的班級,專業,學院這些基礎資料都是存在的,我只需要把學生的班級在資料庫裡面弄準確即可。b.處理這些資料那我要知道我應該處理那幾張表 這個需要基於對系統的資料結構有所了解 那麼我處理資料需要牽涉到四張表 學院部門資訊表 bmdmb 學生資...
關於資料預處理的相關技巧
前言 本文主要是介紹下在乙個實際的機器學習系統中,該怎樣對資料進行預處理。個人感覺資料預處理部分在整個系統設計中的工作量佔了至少1 3。首先資料的採集就非常的費時費力,因為這些資料需要考慮各種因素,然後有時還需對資料進行繁瑣的標註。當這些都有了後,就相當於我們有了元素的raw資料,然後就可以進行下面...
關於PHP處理Json資料的例子
最近工作需要在原來靜態看板 大屏 頁面的基礎上,實現資料的動態展示,而且需要定時重新整理。接到任務後就馬不停蹄的開始修改頁面 顯然這個需求最好的解決方法就是用ajax對後台資料進行定時請求,在前端頁面進行重新整理 基本的效果是這個樣子的 對後台資料進行遍歷,迴圈展示在 上。老實講,做個ajax向後端...