汇编语言王爽 实验九

第一次代码如下:

assume cs:code
;编程:在屏幕中间分别显示绿色,绿地红色,白底蓝色的字符串‘welcome to masm!’
;内存单元地址中,B8000H-BFFFFH共32kb的空间,为80*25彩色字符模式的现实缓冲区
data segment
	'welcome to masm!'
data ends
;         7  654  3  210
;        BL  RGB  I  RGB
;       闪烁 背景 高亮 前景
;  在一行中,一个字符占两个字节的存储空间(一个字),低位字节存储字符的ascii码,高位字节存储自负的属性  如 41 02   表示黑底绿色的A
;  绿色的ASCII码为 00000010 02H 绿色A为 41 02   r red g green b blue  
code segment
start:  mov ax,data
	mov ds,ax
	
	mov ax,B800h
	mov es,ax 
	mov cx,16
	mov si,0
;绿色 02h  绿地红色24h 白底蓝色  红绿蓝就是白 71h
s:      mov bl,ds:[si]
	mov es:[si],bl
	mov es:[si+160],bl
	mov es:[si+320],bl
	mov bh,02h
	mov es:[si+1],bh
	mov bh,24h
	mov es:[si+161],bh
	mov bh,71h
	mov es:[si+321],bh
	
	add si,2
	loop s	

	mov ax,4c00h
	int 21h


code ends

end start

出现错误:

 发现没有给 welcome to masm! 赋予内存空间!

同时B800H的书写形式是错的! 应为0B800H

并不明显 令其闪烁

 

 

另一种代码:

assmue cs:code,ds:data,ss:stack

data segment

         :0123456789abcdef
    db   'welcome to masm!'       ;用ds:【si】来copy

    db   00000010B                :用ds:[bx] 里copy
    db   00100100B       
    db   01110001B

data ends

stack segment stack
    db   128 dup(0)
stack ends

code segment

    start:mov ax,stack
          mov ss, ax
          mov sp,128

;编程:在屏幕中间分别显示 绿色 绿地红色,白底蓝色的字符串‘welcome to masm!'
;数据的组织
;数据的处理    一个字符在屏幕上占用两个字节 低地址存放字符的asc码  高地址存放字符的属性


        mov bx,data
        mov ds,bx

        mov bx,0B800H
        mov es,bx

        mov si,0
        mov di,160*10+30*2  ;  di是屏幕的位置 随便设置一个   偶数地址
        mov bx,16
        mov dx,0

        mov cx,3

showMasm:    push bx
        push cx
        push si
        push di


        mov cx,16
        mov dh,ds:[bx]        ;颜色属性  只需赋值一次

showRow: mov dl,ds:[si]        ;移动字符     showRow 是对一整行 的所有字母进行移动
        mov es:[di],dx        ;移动整体        其中 颜色已经提前赋值给db
        add di,2                    ;
        inc si
        loop showRow

        pop di
        pop si
        pop cx
        pop bx
        add di,160
        inc bx
        loop showMasm
        
        mov ax,4c00H
        int 21H

code ends


end start




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值