汇编语言-王爽-实验10

1.显示字符串

问题:编写一个通用的子程序来实现该功能

子程序名称:show_str

功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串

参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79),(cl)=颜色,ds:si指向字符串的首地址

返回:无

应用举例:在屏幕的8行3列,用绿色显示data段中的字符串。

内存地址中有一80*25彩色字符模式显示缓冲区的结构,地址空间为:B8000H~BFFFFH,共32KB。向这个地址空间写入数据,写入的内容就会立即出现在显示器上。

80*25表示显示器可以显示25行,每行80个字符,每个字符可以有256中属性(背景色、前景色、闪烁、高亮等组合信息)。每个字符在显示缓冲区中占有两个字节,分别存放字符的ASCII码和属性。在

8*25模式下,一屏的内容在显示缓冲区中共占4000个字节。

 1 assume  cs:code, ds:data, ss:stack
 2 data segment
 3     db 'Welcome to masm!', 0
 4 data ends
 5 
 6 stack segment
 7     db  16 dup (0)
 8 stack ends
 9 
10 code segment
11      start :  mov dh, 8
12     mov  dl, 3
13     mov  cl, 2
14     mov ax, data
15     mov ds, ax
16     mov ax, stack
17     mov ss, ax
18     mov sp, 16
19     mov si, 0
20     call  show_str
21 
22     mov ax, 4c00h
23     int 21h
24 
25 show_str: push cx
26     mov ax, 0b800h
27     mov es, ax
28     mov di, 1124
29           s :  mov cl, [si]
30     mov ch, 0
31     jcxz   ok
32     mov es:[di], cl
33     inc   di
34     pop cx
35     mov es:[di], cl
36     push cx
37     inc   si
38     inc   di
39     jmp  s
40         ok :  pop cx
41     ret
42 code ends
43 end start

  

猜你喜欢

转载自www.cnblogs.com/hl249853856/p/11838021.html