中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-16 11:03
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 汇编语言编译器使用2 查看 2,250 回复 10
楼 主 汇编语言编译器使用2 发表于 2010-04-06 21:33 ·  中国 陕西 西安 电信
初级用户
积分 88
发帖 32
注册 2010-03-27 14:30
UID 163163
性别 男
状态 离线
题目是把buff1中的数据传到buff2
源程序如下:
DSEG SEGMENT
buff1 db 0,1,2,3,4,5,6,7,8,9,
db 11,12,13,14,15,16,17,18,19,20
buff2 db 20 dup(?)

DSEG ENDS


CSEG SEGMENT
assume cs:CSEG, ds:DSEG



MAIN PROC FAR ;主程序入口

mov ax, dseg
mov ds, ax
mov ax,eseg
mov es, ax
mov cx,20
lea si,buff1
lea di,buff2
cycle:mov al,
mov ,al
inc si
inc di
loop cycle
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP

CSEG ENDS

END MAIN
编译后
出现如下错误
Unable to open input file: transformdata.asm
高手指教一下
2 发表于 2010-04-07 11:59 ·  中国 黑龙江 哈尔滨 联通
高级用户
★★
苏醒的沉睡者
积分 659
发帖 217
注册 2003-02-15 00:00
UID 930
性别 男
来自 福建
状态 离线
英文意思为,无法打开输入文件:transformdata.asm
好久没碰Dos,手都生了,赶紧回来练练.嘿嘿
3 发表于 2010-04-07 12:17 ·  中国 黑龙江 哈尔滨 联通
高级用户
★★
苏醒的沉睡者
积分 659
发帖 217
注册 2003-02-15 00:00
UID 930
性别 男
来自 福建
状态 离线
我用masm 5.0来编译了一下,提示是a.asm(2): warning A4101: Missing data; zero assumed

还有代码的第18行。。mov ax,eseg中的eseg在哪里?
好久没碰Dos,手都生了,赶紧回来练练.嘿嘿
4 再请教一下 发表于 2010-04-07 20:56 ·  中国 陕西 西安 电信
初级用户
积分 88
发帖 32
注册 2010-03-27 14:30
UID 163163
性别 男
状态 离线
buff1 db 0,1,2,3,4,5,6,7,8,9,
db 11,12,13,14,15,16,17,18,19,20
这种格式对吗?我这样写是因为书上是这样的,还有输表格的时候,书上也是这样写的,是不是一些版本的masm不支持啊?
5 发表于 2010-04-08 09:12 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 2,223
发帖 789
注册 2005-01-27 00:00
UID 35703
性别 男
状态 离线
如3楼所指错误有2,相应地,buff1行末的逗号去除,改eseg为dseg。
“无法打开输入文件:transformdata.asm”说明你的源程序文件名应该不是transformdata.asm,即将它重命名为transformdata.asm,即可。
my major is english----my love is dos----my teacher is the buddha----my friends--how about U
6 发表于 2010-04-08 12:12 ·  中国 黑龙江 哈尔滨 教育网
高级用户
★★
苏醒的沉睡者
积分 659
发帖 217
注册 2003-02-15 00:00
UID 930
性别 男
来自 福建
状态 离线
原来那个错误是末尾的 ,问题啊。。。。
这个没注意。。
好久没碰Dos,手都生了,赶紧回来练练.嘿嘿
7 很受益 发表于 2010-04-08 21:46 ·  中国 陕西 西安 电信
初级用户
积分 88
发帖 32
注册 2010-03-27 14:30
UID 163163
性别 男
状态 离线
非常 感谢
8 发表于 2010-04-20 20:50 ·  中国 黑龙江 伊春 联通
新手上路
积分 10
发帖 5
注册 2010-04-14 16:45
UID 164593
性别 男
状态 离线
haishi budong
9 发表于 2010-04-24 22:02 ·  中国 陕西 西安 电信
初级用户
积分 88
发帖 32
注册 2010-03-27 14:30
UID 163163
性别 男
状态 离线
你也在学汇编??
10 发表于 2010-04-25 11:27 ·  中国 黑龙江 哈尔滨 联通
高级用户
★★
苏醒的沉睡者
积分 659
发帖 217
注册 2003-02-15 00:00
UID 930
性别 男
来自 福建
状态 离线
chrise,最近怎么没有新问题啊。。。不大习惯了。。
好久没碰Dos,手都生了,赶紧回来练练.嘿嘿
11 发表于 2010-06-30 16:01 ·  中国 福建 厦门 电信
高级用户
★★★
积分 741
发帖 366
注册 2007-07-25 19:11
UID 94024
性别 男
状态 离线
酱紫写会不会好一点呢?而且改动下数据也不容易出问题。
DSEG  SEGMENT
buff1 db 0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20
datalen equ $-buff1;要常用伪指令来使程序更容易修改。
buff2 db datalen dup(?)
DSEG ENDS
CSEG SEGMENT
assume cs:CSEG,ds:DSEG
MAIN PROC FAR;主程序入口
mov ax,seg DSEG
mov ds,ax
mov es,ax
cld
mov si,offset buff1
mov di,offset buff2
mov cx,datalen
rep movsb;串COPY操作在软件中频繁使用,所以循环体越小越好。
mov ax,4c00h;程序结束,返回到操作系统系统
int 21h
MAIN ENDP
CSEG ENDS
END MAIN


[ Last edited by netwinxp on 2010-7-6 at 19:39 ]
论坛跳转: