注册 登录
编程论坛 汇编论坛

初学,汇编里写显存遇到的小问题

未未来 发布于 2014-04-14 22:15, 806 次点击
程序代码:
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 开始的
求解
0 回复
1