实验9要求阅读材料后进行编程
实验要求在屏幕中间分别显示绿色、绿底货色、白底蓝色的字符串
思路是,算出屏幕中间的内存地址(大概是在11行左右),用这个地址给段寄存器es赋值
同时将定义在dataseg中的字符串地址复制给ds,找到这两个地址后,使用两个循环并搭配dp、bx、si寻址赋值即可。
至于实验中要求的字体样式,提前算出其对应的字节码之后存入字符串数据区后方,当上面两个循环赋值的时候也就同时赋值了字符的颜色信息。
代码如下:
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db 'XIAOHEI IS BLACK'
db 82h,0a4h,0f1h
datasg ends
stacksg segment
db 8 dup (0)
stacksg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov ax,0B86Eh
mov es,ax
mov cx,3
mov si,0
s1: push cx
mov bx,0
mov bp,0
mov cx,16
s: mov al,ds:[bp]
mov es:[bx].40h,al
mov al,ds:16[si]
mov es:[bx].40h[1],al
inc bp
add bx,2
loop s
pop cx
mov ax,es
add ax,10
mov es,ax
inc si
loop s1
mov ax,4c00h
int 21h
codesg ends
end start
结果如下图:

不错