王爽 《汇编语言 第3版》 实验9 代码及思路

实验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

结果如下图:
scrnprint

1 条评论

  1. 樱桃

    不错