本部分为王爽《汇编语言》第10章的三个实验。
主要内容为:
1.实现对存储的字符串或二进制数据的屏幕显示
2.理解并改进div
存在的溢出问题
1.实验一 显示字符串
子程序描述:
名称:show_str
功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。
参数:dh
行号,取值0~24,dl
列号,取值0~79,cl
颜色
重要思路:
子程序可以分为定位坐标和复制粘贴数据两部分。
1.根据第9章的实验可知,如果要显示字符串,需要从B8000
开始。所以首先计算dh、dl
对应行、列的实际坐标。尤其注意列是从0开始的。
2.用jcxz 标号
实现读到data段为0,即跳转。
3.为简化程序,多用其它寄存器。比如用al
存储颜色,所以cx
就可以用来从data段中取数了。
assume cs:code
data segment
db 'Welcome to masm',0
data ends
code segment
start: mov dh,14
mov dl,15
mov cl,2
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4C00h
int 21h
show_str: mov ax,0
mov al,dh
mov bl,0Ah
mul bl
add ax,0B800h
mov bx,0
mov bl,dl
sub bl,1
add bl,bl ;列从0开始
mov es,ax
mov al,cl
mov ch,0
s: mov cl,[si]
jcxz ok ;实现读到0跳转
mov es:[bx],cl
mov es:[bx+1],al
add bx,2
add si