文章目錄
- 實驗分析
- code

實驗分析
- 3行16列的字元串處理,一定會用到嵌套循環,是以要定義stack儲存cx
- 設定指針指向行數列數
- 題目要求每行顔色不同,那麼對于字元顔色的處理要放在row循環中
-
題目要求從螢幕中間輸出,那麼就要開始行數及列數
需顯示在螢幕中間,由材料可得每1行有80個字元占160個位元組,而顯示的字元串位元組+屬性位元組,共32個位元組,是以,要達到水準居中的效果開始值應該為(160 - 32)/ 2 =64
一共顯示3行,是以行數開始值為(25-3)/ 2 =11
-
對于尋址方式的了解
這道題也可以用bx指向行si指向列di
Assembly-Lab 9實驗分析code
code
assume cs:code,ds:data,ss:stack
data segment
str db 'welcome to masm!'
c db 2,24h,71h
data ends
stack segment
db 16 dup (0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov ax,0b86eh
mov es,ax
sub si,si ;指向顔色同時指向行數
mov cx,3
row: sub di,di ;指向字元位置
sub bx,bx ;指向字元位置
mov ah,c[si] ;讀顔色
push cx
mov cx,16
col: mov al,str[di] ;讀字元,字元串内容的偏移位址,每次增加1
mov es:40h[bx+di],ax ;寫字元,緩沖區的偏移位址,每次增加2
inc di
inc bx
loop col
pop cx
mov ax,es ;修改段位址
add ax,0ah
mov es,ax
inc si
loop row
mov ax,4c00h
int 21h
code ends
end start