《汇编语言(第三版)》王爽,实验九

3 篇文章 0 订阅
3 篇文章 0 订阅

不知道为什么,在win7下用的emu8086,显示会错位,到不了中间位置


在网上找了下别人的代码,发现即使是在别人那里能正常显示在中间位置,复制到我这里都会显示为上图所示的样子。

下面是代码,定义数据段的时候为了后面不用将ASCII码和属性分开读取,就定义成如下这样比较繁琐的形式了。(其实做的时候第一时间没想到将ASCII码和属性分开写,比如db 'welcome to masm!'    db 02H,24H,71H这样)

assume cs:code


data segment
    ;绿色 
    db 'w',02H,'e',02H,'l',02H,'c',02H,'o',02H,'m',02H,'e',02H,' ',02H
    db 't',02H,'o',02H,' ',02H,'m',02H,'a',02H,'s',02H,'m',02H,'!',02H
    ;绿地红色
    db 'w',24H,'e',24H,'l',24H,'c',24H,'o',24H,'m',24H,'e',24H,' ',24H
    db 't',24H,'o',24H,' ',24H,'m',24H,'a',24H,'s',24H,'m',24H,'!',24H
    ;白底蓝色
    db 'w',71H,'e',71H,'l',71H,'c',71H,'o',71H,'m',71H,'e',71H,' ',71H
    db 't',71H,'o',71H,' ',71H,'m',71H,'a',71H,'s',71H,'m',71H,'!',71H
data ends    
code segment 
start:
    mov ax,data
    mov ds,ax
    
    mov ax,0B800H
    mov es,ax;找到显示缓冲区
    
    mov bx,0
    mov si,0720H;偏移地址
    
    mov cx,16
  s:
    mov ax,word ptr [bx]
    mov word ptr es:[si],ax;12行
    
    mov ax,word ptr [bx+32]
    mov word ptr es:[si+0a0h],ax;13行           
    
    mov ax,word ptr [bx+64]
    mov word ptr es:[si+140h],ax;14行
    add bx,2
    add si,2
    loop s 
          
    mov ax,4c00h
    int 21h                            
code ends
end start

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值