關於資料的處理

2022-03-27 15:17:35 字數 2955 閱讀 3742

計算機處理資料時有兩個基本問題:

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向後端...