天天看點

Assembly-Lab 9實驗分析code

文章目錄

  • 實驗分析
  • code
Assembly-Lab 9實驗分析code
Assembly-Lab 9實驗分析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
           

繼續閱讀