1. 程式人生 > >組合語言實驗9

組合語言實驗9

一:

程式碼:

實驗結果:

二:

程式碼:

實驗結果:

三:

程式碼:

assume ds:data, cs:code
data segment
       db 'welcome to masm!' 
       db 2H,24H,71H         ;字串屬性值
data ends

stack segment
        dw 8 dup(0)
stack ends
 
code segment
start:  
        mov ax,data
        mov ds,ax            ;字串及屬性值所在段的段地址送入ds
mov ax,stacksg mov ss,ax mov ax,0b800H mov es,ax ;80×25彩色字元模式顯示緩衝區段地址送入es mov cx,3 mov di,0 mov si,06E0h s0:push cx mov al,ds:[16+di] mov bx,0 mov cx,16 s1:mov dl,ds:[bx] mov byte ptr es:[si],dl
mov byte ptr es:[si+1],al inc bx add si,2 loop s1 add si,128 inc di pop cx loop s0 mov ax,4c00h int 21h ; 新增程式碼,通過迴圈逐個將每個字元及其屬性送入相應的顯示緩衝區對應行 ; 即:將data段的字元及屬性通過迴圈逐個mov到顯示緩衝區(es)段相應的單元內 ;
可以先嚐試分別寫三段程式碼,每次完成一行的顯示 ; 程式執行起來後,再嘗試通過靈活的定址方式和迴圈,對三段程式碼修改和簡化 ; 學習第10章子程式後,還可以進一步完善優化,設計子程式,將行號、列號、顏色屬性設定成入口引數 code ends end start

實驗結果:

 

 總結:

實踐出真知

多重迴圈注意儲存cx的值 不能重複不能丟失