初学,汇编里写显存遇到的小问题
程序代码:
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 开始的
求解