程序代码:
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
;此处输入数据段代码
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 开始的
求解