实验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
结果如下图:
不错