如何将线性地址转换为矩阵? (16分)

  • 主题发起人 主题发起人 dazzling
  • 开始时间 开始时间
D

dazzling

Unregistered / Unconfirmed
GUEST, unregistred user!
地址:0~0x6fff,每8个字节为一个字符单位,每行共有80个字符,共40行;
目的是:怎样构造一个地址结构,使数据往里存时屏幕是从左至右按列显示(一列显示完显示第2列。共80列,40行)这样?
图:
假设原来的模型:(从左到右从上到下)
-----------------------
-----------------------
---------------
要求更改之后的:(从上到下从左到右显示)
||||
||||
||||
||||
||||
 
T8040Store=class
private
FCells:array[40,80]of Char;
FX,FY:Byte;
public
procedure Clear;
procedure WriteChar(c:Char);
function CharAt(X,Y:Byte):Char;
end;

procedure T8040Store.Clear;
var
x,y:Byte;
begin
for y:=0 to 39do
for x:=0 to 79do
FCells[y,x]:=#0;
FX:=0;
FY:=0;
end;

procedure T8040Store.WriteChar(c:Char);
begin
if FX>=80 then
exit;
FCells[FY,FX]:=c;
if FY=39 then
begin
FY:=0;
Inc(FX);
end
else
Inc(FY);
end;

function T8040Store.CharAt(X,Y:Byte):Char;
begin
Result:=FCells[Y,X];
end;

可以吗?
 
呵呵,兄台未理解我的意思.
不过现在不用了.
自己已经搞定了.主要就是地址分段取
 
后退
顶部