1911A:微博三方登陸原理講解
阿新 • • 發佈:2020-11-05
1. 實驗任務1
ex1.asm的原始碼:
;ex1.asm assume cs:code code segment mov ax, 0b810h mov ds, ax mov byte ptr ds:[0], 1 mov byte ptr ds:[1], 1 mov byte ptr ds:[2], 2 mov byte ptr ds:[3], 2 mov byte ptr ds:[4], 3 mov byte ptr ds:[5], 3 mov byte ptr ds:[6], 4 mov byte ptr ds:[7], 4 mov ah, 4ch int 21h code ends end
使用masm、link工具彙編、連結:
debug除錯:
觀察到cx=31,使用u命令精準反彙編至30;
使用g命令執行至倒數第二行,此時命令列出現影象
2. 實驗任務2
ex2.asm的原始碼:
;ex2.asm assume cs:code code segment mov ax, 0b810h mov ds, ax mov bx, 0 mov ax, 101H mov cx, 4 s: mov [bx], ax add bx, 2 add ax, 101H loop s mov ah, 4ch int 21h code ends end
使用masm、link工具彙編、連結:
執行結果:
debug除錯:
觀察到cx=1c,使用u命令精準反彙編至1b;
使用g命令執行至倒數第二行,此時命令列出現影象:
實驗分析:
該程式的作用與ex1.exe相同,都是對視訊記憶體的指定位置寫入特定的內容,使得螢幕上顯示四個顏色形狀各異的圖示。
在具體實現上,ex1.exe通過程式碼的重複來更改視訊記憶體地址,而ex2.exe則利用了loop語句簡化了這一過程。
3. 實驗任務3
ex3.asm的原始碼:
assume cs:code code segment mov ax,0b800h mov ds,ax mov ax,0237h mov bx,07b8h mov cx,16 s: mov ds:[bx],ax add bx,2h loop s mov ax,4c00h int 21h code ends end
執行結果截圖:
把填充的字資料,從0237H改成0239H後,觀察結果:
把填充的字資料,從0237H改成0437H後,觀察結果:
實驗分析:
這個字資料中高位位元組裡存放的是圖示的顏色,低位位元組裡存放的圖示的內容。
4. 實驗任務4
ex4.asm的原始碼如下:
assume cs:code code segment mov ax,0 mov ds,ax mov ax,0200h mov bx,ax mov ax,0 mov cx,03fh s: mov ds:[bx],ax add ax,1 add bx,1 loop s mov ax,4c00h int 21h code ends end
debug除錯:
成功將0~63寫入記憶體0:200~0:23f。
5. 實驗任務5
ex5.asm的原始碼如下:
assume cs:code code segment mov ax ,cs mov ds,ax mov ax,002h mov es,ax mov bx,0 mov cx,cx s: mov al,ds:[bx] mov es:[bx],al inc bx loop s mov ax,4c00h int 21h code ends end
debug除錯結果如下:
可以看見已經成功把程式本身複製至0:200記憶體單元處。