170412 彙編 顯示字串的子程式

2021-07-30 11:24:13 字數 974 閱讀 5391

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 ...