1625-5 王子昂 總結《2023年4月12日》 【連續第193天總結】
a.組合語言實驗十30%
b.子程式之一:給定行號、列號、字串和顏色,可以在程式中修改視訊記憶體來達到顯示字串的目的
**如下:
;dh中儲存行號(0~24),dl中儲存列號(0~79),cl中儲存顏色,ds:si指向字串的首位址
show_str:
mov ax,0b800h
mov es,ax ;視訊記憶體位址送入es
mov al,dh
mov bx,160 ;行位址*160位元組
mul bx
mov bp,ax
mov dh,0 ;列位址*2位元組
mov di,dx
add di,di
add di,bp ;累加至di暫存器中
mov bx,0 ;bx作為字串計數器
mov al,cl ;將顏色轉存在al中,騰出cx來作為字串結尾的0判斷
l:mov cl,[si+bx]
mov es:[di],cl
mov es:[di+1],al
jcxz ok
add di,2
add bx,1
loop l
ok:ret
其中遇到的問題有:
注意8位暫存器和16位暫存器不可互相賦值,這個一查就發現錯了
注意記憶體和記憶體不可直接互相賦值,一定要通過暫存器中轉
注意暫存器的值、還是暫存器的間接定址(暫存器的值指向的記憶體區域的內容),顏色的地方我就順手也打成[al]了,研究了半天用bp去表示,其實根本沒必要
注意計數暫存器通用時,兩個記憶體是否大小相等:本題中data段裡的每個字元乙個位元組,視訊記憶體裡的每個字元兩個位元組,不可共用計數
jcxz判斷cx是否為0,非0則繼續迴圈,是0則終止的判斷真好用
c.明日計畫
實驗十剩下兩個子程式
olleydbg
pyqt
彙編 顯示字串
dos功能呼叫 dos利用軟體中斷方式提供系統功能。中斷呼叫指令是 int n 其中n表示呼叫的中斷號 即中斷0 中斷255號。dos系統呼叫一般有如下4個步驟 1 在ah暫存器中設定系統功能呼叫號 2 在指定暫存器中設定入口引數 3 用中斷呼叫指令 int n 執行功能呼叫 4 根據出口引數分析功...
8086CPU彙編 顯示字串
在第8行第5列以紅色字型顯示 welcome to masm assume ds data,cs code data segment db welcome to masm 0 data ends code segment start mov ax,data mov ds,ax mov si,0 在8...
字串子串
定義變數 string this is a test 取字串長度,空格也算 從positon處提取字串,positon從0 開始.也可以認為是提取postion之後字串,不算position處 從position位置處取length長的字串.也可以 echo cut c 1 4,取1 4的字元,1 ...