1. 程式人生 > 實用技巧 >修改Mysql資料庫的資料儲存位置(二)

修改Mysql資料庫的資料儲存位置(二)

1. 實驗任務1

使用任意文字編輯器,錄入彙編源程式task1.asm。

assume cs:code, ds:data
data segment
db 'Nuist'
db 5 dup(2)
data ends
code segment
start:
mov ax, data
mov ds, ax
mov ax, 0b800H
mov es, ax
mov cx, 5
mov si, 0
mov di, 0f00h
s: mov al, [si]
and al, 0dfh
mov es:[di], al
mov al, [5+si]
mov es:[di+1], al
inc si
add di, 2
loop s
mov ah, 4ch
int 21h
code ends
end start

閱讀源程式,從理論上分析原始碼的功能,尤其是line15-25,迴圈實現的功能是什麼,逐行理解每條指 令的功能。

  使用masm、link對task1.asm進行彙編、連結,得到可執行檔案task1.exe,執行並觀  察結果。

  使用debug工具對程式進行除錯,執行到程式返回前,即line27之前,觀察結果。

  修改line4裡5個位元組單元的值,重新彙編、連結、執行,觀察結果。

db 5 dup(2)
--> 改成:
db 2,3,4,5,6

基於觀察,分析、猜測這裡的數值作用是什麼。

(1)首先向資料段的前10個位元組輸入資料,其中db 5 dup(2)表示5個重複的2(位元組資料)。向附加段暫存器es輸送視訊記憶體地址(在記憶體地址結構中,B8000H~BFFFFH共32KB的空間,為80x25彩色字元模式的顯示緩衝區。向這個地址空間寫入資料,寫入的內容將立即出現在顯示器)。執行5次迴圈,迴圈的內容是:將資料段中的字元資料送往視訊記憶體地址中,並執行add al,odfh(將小寫轉化為大寫),mov al, [5+si],mov es:[di+1], al(為設定顯示顏色的操作,將2送往視訊記憶體中儲存對應字元地址的下一個地址,實現控制顏色)。

(2)db 2,3,4,5,6即設定顏色的值為不同顏色。

2. 實驗任務2

已知資料段data中定義位元組資料如下:

data segments
db 23, 50, 66, 71, 35
data ends

編寫程式,在螢幕上以十進位制整數形式列印輸出這5個兩位數。

assume cs:code, ds:data
data segment
	db 23,50,66,71,35
data ends
code segment
start:
	mov ax,data
	mov ds,ax
	mov di,0
	mov cx,5
s:	mov ah,0        //*將位元組資料存入ax暫存器中,因為ax儲存2個位元組,所以
	mov al,ds:[di]      ah中存0*//
	mov bl,10
	div bl         //ax中資料除以10,餘數存在ah,商存在al
	mov ds:[di+10],al  //將商的內容存入資料段中,(取可用的記憶體單元即可)
	mov ds:[di+11],ah  //將商的內容存入資料段中,(取可用的記憶體單元即可)
	mov ah,2       //*
	mov dl,ds:[10+di]     顯示商
	add dl,30h
	int 21h       *//
	mov ah,2       //*
	mov dl,ds:[11+di]   顯示餘數
	add dl,30h
	int 21h            *//
	mov ah,2
	mov dl," "
	int 21h
	inc di             //di自增1,用於讀取下一位置處的位元組資料
	loop s
	mov ax,4c00h	
	int 21h
code ends
end start