急~~~简单问题,24小时内结帖
假设代码如下:
code segment
assume cs:code,ds:code,ds:code
org 100h
start:
mov ax,4c00h
int 21h
file db 15 dup(' ')
code ends
end start
假设程序在FILE中存入一串字符串之后(字符串长度肯定小于15个),应该加些什么代码能修改到适合字符串的长度~~~
问题点数:50、回复次数:13Top
1 楼prosong(prosong)回复于 2003-01-10 00:25:43 得分 0
要干什么啊, 没看懂?Top
2 楼gzyip(Java)回复于 2003-01-10 00:39:29 得分 0
就是说我在代码中定义了
file db 15 dup(?)
现在我想写一段代码,修改15,也可以说成是修改FILE的长度~~~Top
3 楼andersky(非线性)回复于 2003-01-10 00:44:30 得分 0
不行吧Top
4 楼gzyip(Java)回复于 2003-01-10 00:49:31 得分 0
那么如果我在运行程序过程中询问用户字符串的长度~
然后再生成变量行不行???Top
5 楼prosong(prosong)回复于 2003-01-10 01:13:34 得分 30
字符串后面放个 0 好了Top
6 楼gzyip(Java)回复于 2003-01-10 01:26:52 得分 0
怎样放啊???能举个例子来看一下吗???Top
7 楼webhua()回复于 2003-01-10 09:12:36 得分 0
code segment
assume cs:code,ds:code,ds:code
org 100h
start:
mov ax,4c00h
int 21h
filelen db 15
file db 15 dup(' ')
code ends
end start
然后根据filelen的值来确定file的长度。修改只要修改filelen的值就行。
----------------------------------------------------------------
或者
code segment
assume cs:code,ds:code,ds:code
org 100h
start:
mov ax,4c00h
int 21h
file db 15 dup(' '),0
code ends
end start
然后改0在file的位置。
例如插入代码
push cx
push di
mov cx,N ;;N是长度
mov di,offset file
mov al, ' '
lab;
mov ds:[di],al
loop lab
mov ds:[di],0
pop di
pop cx
Top
8 楼webhua()回复于 2003-01-10 09:15:03 得分 0
不好意思
上面的代码在 loop lab前应该加上inc diTop
9 楼gzyip(Java)回复于 2003-01-10 09:33:08 得分 0
我试过分析过内存中的数据存放,发现一个字符串的结尾并没有明显的标记啊~~~~
那么插入0真的有用???
例如:
file1 db 5 dup(?)
file2 db 5 dup(?)
那么,file1和file2在内存中存放的时候是连续存放的,也就是说file2串的头是连着file1的尾的~~~
假设我在file1[3]处插入0H,那么按照大家所说,汇编的编译程序就会认为file1的长度从5变成了4,那么这是什么原理呢???Top
10 楼dht96050511(寇仲)回复于 2003-01-10 14:36:08 得分 0
可用C语言对字符串处理的方法,加一个'\0'不就OK啦Top
11 楼xidongs(小妖 妖怪也能编程的,你不知道吗?)回复于 2003-01-10 15:50:16 得分 0
直接写
file db 'demo'
demo是字符串
这样不好吗??
你的问题写的不请Top
12 楼ak47xiaoyouak(aa)回复于 2003-01-10 17:07:48 得分 0
goodTop
13 楼hswxf(黄山一刀)回复于 2003-01-10 19:45:43 得分 20
你的FILE是一个数据段性质的代码结构是紧凑的,要在源程序中的DB定义中加长数据段,办法不少但原理一样:
找出FILE的位置增加长度后,若是EXE文件则找至文件的数据位改呀!
若是COM 文件同上
其它不要说了
、、、
Top





