您的位置:首页 > 其它

王爽《汇编语言》实验9:显示字符 解答

2012-12-14 11:46 387 查看
直接看代码:
assume cs:code,ds:data,ss:stack

data segment
db "welcome to masm!"
; 绿字02h,绿底红字24h,白底蓝字71h
db 02h,24h,71h
; 25行,从0开始,算出中间为11,12,13行。偏移量为11*160=1760,12*160=1920,13*16=2080
; 16个字符,加上颜色属性,算出列偏移量为(160-16*2)/2 = 64
dw 1824,1984,2144
data ends

stack segment
dw 8 dup(0)
stack ends

code segment
start:	mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax

mov cx,3
mov di,0 ;每行的初始地址的递增量,每个循环加2
mov si,0 ;每次的颜色属性的递增量,每个循环加1

s:		push cx
push di
push si

mov bx,[19+di] ;取初始地址,19是data数据前两行占的大小
mov bp,[16+si] ;取颜色,16是data数据前一行行占的大小

mov di,0 ;循环加入字符的递增量,每次加1
mov si,0 ;写入内存时字符递增量,每次加2
mov cx,16

s0:		mov al,[di]
mov es:[bx+si],al
mov al,[bp]
mov es:[bx+si+1],al

inc di
add si,2
loop s0

pop si
pop di
pop cx
inc si
add di,2
loop s

mov ax,4c00h
int 21h
code ends

end start


win7的话要装一个dos才能运行看到效果,我这篇文章有介绍怎么安装:
/article/7738151.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: