| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 805 人关注过本帖
标题:初学,汇编里写显存遇到的小问题
只看楼主 加入收藏
未未来
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:182
专家分:157
注 册:2012-11-6
结帖率:94.87%
收藏
 问题点数:0 回复次数:0 
初学,汇编里写显存遇到的小问题
程序代码:
DATAS SEGMENT
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
   
   mov ah,1
   int 21h
   
  mov bl,al
  
  int 21h
  add al,bl
  mov ah,0
  aaa
  
  add ax,3030h
  mov si,ax;储存结果
  mov ax,0b800h ;写显存
  mov es,ax
  
  mov ah,3;获取光标位置 dh行号,dl列号
  mov bh,0
  int 10h
  
  mov al,160
  mul dh
  add al,dl
  
  mov bx,ax
  mov ax,si
  mov byte ptr es:[bx+2],3dh ;写入=号
  mov es:[bx+4],ah
  mov byte ptr es:[bx+5],1eh
  mov es:[bx+6],al
  mov byte ptr es:[bx+7],1eh
  
    

 
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

获取光标位置之后 利用位置=行号×160+列号 得到位置,
为什么在写的时候第一个写入= 要bx+2
然后写入数据开始时bx+4
之后就是+1
.
还有比如第2行,第三列
利用上面公式 应该是 143H
但实际为什么是146H 开始的
求解
2014-04-14 22:15
快速回复:初学,汇编里写显存遇到的小问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012060 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved