彙編語言(王爽)實驗十三

實驗十三

1、編寫並安裝int7ch中斷例程,功能爲顯示一個用0結束的字符串,中斷例程安裝在0:200處

參數:(dh)=行號 (dl)=列好 (cl)=顏色 ds:si指向字符串首地址

assume cs:code
data segment
	db "welcome to masm!",0
data ends

code segment
	start:	mov dh,10
			mov dl,10
			mov cl,2
			mov ax,data
			mov ds,ax
			mov si,0
			int 7ch
			
			mov  ax,4c00h
			int 21h
code ends
end start
assume cs:code

code segment
	start:	mov ax,cs
			mov ds,ax
			mov si,offset do0
			
			mov ax,0
			mov es,ax
			mov di,200h
			
			mov cx,offset do0end-offset do0
			
			cld 					; 安裝程序
			rep movsb
			
			mov ax,0				; 設置中斷向量表
			mov es,ax
			mov word ptr es:[7ch*4+0],200h
			mov word ptr es:[7ch*4+2],0
			
			mov ax,4c00h
			int 21h
			
	  do0:	push ax					; 保護現場
	  		push es
	  		push di
	  		push si

	  		mov ax,0b800h			; 設置段地址
	  		mov es,ax
			  
	  		mov al,0A0H				; 設置偏移地址
			mul dh
			mov di,ax
			mov al,2
			mul dl
			add di,ax
	  
	  	s:	push cx				
	  		mov ch,0
	  		mov cl,[si]
	  		jcxz retend
	  		pop cx
	  		
	  		mov al,[si]
	  		mov es:[di],al
	  		mov es:[di+1],cl
	  		add di,2
	  		inc si
	  		
	  		jmp short s

   retend:	pop cx					; 恢復現場
   			pop si
   			pop di
   			pop es
   			pop ax
   			iret
   do0end:	nop	
			
code ends
end start

image-20200322163158382

3、補全程序,分別在屏幕的第2、4、6、8行顯示4句英文詩

assume cs:code

code segment
	s1:	db 'Good,better,best,','$'
	s2:	db 'Never let it rest','$'
	s3: db 'Till good is better','$'
	s4 :db 'And better,best.','$'
	s:	dw offset s1, offset s2, offset s3, offset s4
  row:	db 2,4,6,8

	start:	mov ax,cs
			mov ds,ax
			mov bx,offset s 
			mov si,offset row
			mov cx,4

	   ok:	mov bh,0			; 第0頁
	   		mov dh,cs:[si]		; 行號
			mov dl,0			; 列號
			mov ah,2			; 設置光標位置
			int 10h

			mov dx,cs:[bx]		; ds:bx指向字符串的首地址
			mov ah,9			; 功能號9,在光標處顯示字符串
			int 21h

			inc si				; 換行
			add bx,2			; 下一個字符串

			loop ok

			mov ax,4c00h
			int 21h
code ends
end start

image-20200322165959582

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章