91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

匯編語言顯示功能實現方法是什么

發布時間:2021-11-04 17:23:45 來源:億速云 閱讀:171 作者:iii 欄目:開發技術

本篇內容主要講解“匯編語言顯示功能實現方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“匯編語言顯示功能實現方法是什么”吧!

    問題1

    在屏幕中間分別顯示綠底,綠底紅色,白底藍色的字符串“Welcome to masm!”

    分析:

    1 如何確定字符要顯示的位置

    在80*25的彩色字符模式顯示緩沖區在內存地址的B8000H~BFFFFH共32KB的空間中

    在該模式下,顯示器可以顯示25行,80列

    所以在一行中就有80個字符,共占據160個字節,每個字符低位字節存儲字符的ASCII碼,高位字節存儲字符的顏色屬性

    偏移0000~009F對應的就是顯示器上的第一行;

    偏移0A00~13F0對應的就是顯示器上的第二行;......依次類推

    確定3行字符在每一行的起始位置

    因為顯示的在屏幕的中間,共需要32個字節,屏幕中一行共160個字節,所以開始字節為(160 - 32)/ 2 = 64

    確定3行字符在屏幕中的哪一行

    因為屏幕中一共25行,要顯示3行字符串,一行有160個字符串,則第一行的開始位置是(25 - 3)/ 2 * 160 = 6E0H

    第二行的開始位置是6E0H + 160 = 780H

    第三行的開始位置是780H + 160 = 820H

    2 如何確定字符要顯示的顏色屬性

    每個字符的顏色屬性占據一個字節,每一位表示的不同的顏色屬性,則共有256種顏色屬性

    屬性字節的格式:

    7        (6  5  4)    3    (2  1  0)

    BL   (R G B)  I   (R G B)

    閃爍    背景    高亮      前景

    綠底黑色:0 010 0 000B (20H)

    綠底紅色:0 010 0 100B (42H)

    白底藍色:0 111 0 001B (71H)

    assume cs:code,ds:data
    data segment
    	db 'Welcome to masm!'	
    data ends
     
    code segment
    start:		        mov ax,data
    			mov ds,ax
    			mov bx,0			;ds:bx指向數據段起始位置
     
    			mov ax,0B800H	
    			mov es,ax			;設置顯示內存空間的起始位置
     
    			mov si,64			;設置字符串在一行中的中間位置
    			
    			mov cx,16			;設置循環的次數為字符串的長度
     
    s:			mov al,ds:[bx]		
    			
    			mov ah,20H			;設置第一行的開始位置和顏色
    			mov es:[si+6E0H],ax
    			
    			mov ah,42h			;設置第二行的開始位置和顏色
    			mov es:[si+780H],ax
    			
    			mov ah,71h			;設置第三行的開始位置和顏色
    			mov es:[si+820H],ax
     
    			inc bx 				;設置字符串的偏移
    			add si,2			;設置下一次循環的寫入位置
     
    			loop s
     
    			mov ax,4c00h
    			int 21h
     
    code ends
    end start

     問題2:

    設計一個子程序,使調用者決定顯示的位置,內容和顏色

    分析:

    要實現的功能:在指定的位置,用指定的顏色,顯示一個用0結束的字符串

    指定的參數:行號-dh(取值范圍0~24),列號-dl(取值范圍0~79),取值范圍主要是根據顯示器屏幕的大小

    顏色-cl,ds:si指向字符串的首地址

    assume cs:code,ds:data
    data segment
    	db 'Welcome to masm!',0
    data ends
     code segment
    start:		        mov dh,8
    			mov dl,3
    			mov cl,2
     			mov ax,data
    			mov ds,ax
    			mov si,0			;ds:si指向數據段首地址 
    			call show_str
     			mov ax,4c00h
    			int 21h 
    show_str:	        mov ax,0B800H
    			mov es,ax		;es指向顯示內存空間的段地址 
    			mov ax,160
    			dec dh
    			mul dh
    			mov dh,0
    			dec dl
    			add dl,dl
    			add ax,dx
    			mov di,ax		;設置di指向字符串要顯示的偏移地址
    			mov ah,cl 
    show:		        mov cx,ds:[si]
    			jcxz ok			;設置在遇到字符0的時候退出
    			mov al,ds:[si]
    			mov es:[di],ax
    			add di,2
    			inc si
    			loop show 
    ok:			retf
    code ends 
    end start

    到此,相信大家對“匯編語言顯示功能實現方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    蒙城县| 福建省| 年辖:市辖区| 阳曲县| 东至县| 蒙自县| 镶黄旗| 山东| 北京市| 织金县| 山东省| 正镶白旗| 阳泉市| 城固县| 嵊泗县| 金沙县| 太原市| 高邮市| 石嘴山市| 明光市| 广南县| 陇川县| 清河县| 龙游县| 和龙市| 彭山县| 郓城县| 习水县| 自治县| 图片| 阜平县| 阿勒泰市| 桃园市| 拉孜县| 德格县| 宜春市| 农安县| 思南县| 安达市| 平定县| 郧西县|