突然想到一个问题,请大家解答一下

block1956815 2004-04-10 11:24:11
在汇编中如何实现一个动态的二维数组(行列未知) 一时没答案 请大家说说
...全文
242 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenhao1949 2004-09-16
  • 打赏
  • 举报
回复
在汇编中如何实现一个动态的二维数组(行列未知)
======>
在汇编中如何实现一个动态的1维数组(长度未知)
======>
在汇编中如何实现定义动态空间问题!

既然是动态的,那么只能用堆才安全!
方法很多,我想难度是怎么保证安全
其实只要保证安全,什么办法都可以!

tiamo 2004-09-12
  • 打赏
  • 举报
回复
完全无语.......

内存属于操作系统得东西
有点常识好不好
能这么随便就找个地址来写得么...

dos下有dos下的int 21h
windows下有windows的api....

看看c的源代码吧......
block1956815 2004-09-10
  • 打赏
  • 举报
回复
揭贴了~~~
魔芋 2004-08-18
  • 打赏
  • 举报
回复
把声明写在最后
...
datablock db 0
end
ssh_zy 2004-08-16
  • 打赏
  • 举报
回复
但这是不是申请内存的常规办法呢?
要知道dos下没有哪块内存是绝对私有的,其他任何程序都有访问权的。
所以说如果大家用的表不是你那块表,改了就没有意义了。
programfanny 2004-06-22
  • 打赏
  • 举报
回复
dos下是不是也可以修改全局段描述表呢?
==========================================
可以。进入保护模式,-> 改变描述符数据-> 返回实模式。
HHLADN 2004-06-21
  • 打赏
  • 举报
回复
up
block1956815 2004-06-18
  • 打赏
  • 举报
回复
dos下是不是也可以修改全局段描述表呢?
===========================================================================
不是很清楚.在win32环境下是可以的 应该有办法吧...
ssh_zy 2004-06-17
  • 打赏
  • 举报
回复
我习惯在windows下汇编,申请内存的本质就是改分页表。dos下是不是也可以修改全局段描述表呢?
mihan 2004-06-17
  • 打赏
  • 举报
回复
可否用堆?
eduhf_123 2004-06-17
  • 打赏
  • 举报
回复
我的想法是用相对基址加变址的寻址方式,应该可以实现吧。
声明257个长度为256的DW表,其中第一个表中存放后256个表的偏移量(假设数据类型为16位的整型,数组下标从0开始)。
寻址时,假设要寻址第m行第n列的数据,将第一个表中偏移量为2m、2m+1两个字节当作一个字送入SI,2n送入BX,加上第二个表的标号作为偏移量使用相对基址加变址来完成寻址。
再用两个字节存储m和n的上限,将读取操作做成一个子函数,检查下标是否越界,修改数组属性时只要简单修改那两个字节的内容就可以了。
arnold8792 2004-06-16
  • 打赏
  • 举报
回复
我觉得是不是可以在函数中通过堆栈指针的改变来分配,只要堆栈足够大
语言中好像没有提供,局部变量只能是固定大小的,可能是出于安全的考虑,不能乱分配堆栈空间,但汇编中只要自己把握就行了
Venda 2004-06-15
  • 打赏
  • 举报
回复
申请数组空间,可以通过一般的方法,
访问时以数组单元长度为2个字节为例,eax和ebx中存放数组下标。

mov cx,[eax + ebx * 2 + 数组基地址]

请指教!



programfanny 2004-06-15
  • 打赏
  • 举报
回复
什么环境下的汇编?
申请一块大内存再构造动态数组,可行?
block1956815 2004-06-15
  • 打赏
  • 举报
回复
是偶没说清楚 我的意思是使用8086下的16位的汇编 .因为行列不定, 所以只能申请一个大内存空间
是不是可以这样 :
data segment
line dw 256 dup(?) ;最大列256
row db 256 dup(?) ;最大行256 存储数据类型为byte
...
data ends
coed segment
...
mov ax,offset row
mov bx,offset line
mov row, bx
...
;由ax 和bx可以对数组进行操作
期待有更合理的方法.
block1956815 2004-06-14
  • 打赏
  • 举报
回复
顶上去看看!
constname 2004-04-10
  • 打赏
  • 举报
回复
在C中这是用动态分配来实现的吧, 动态分配实际上是从一块可以使用的内存分配未使用的空间, 只能是相对的. 这个问题听起来很好玩呃, 大家来谈谈啊.
lengbingning 2004-04-10
  • 打赏
  • 举报
回复
Sorry!!
dalvin 2004-04-10
  • 打赏
  • 举报
回复
UP
txdyjsyz 2004-04-10
  • 打赏
  • 举报
回复
关注

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧