CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他开发语言 >  汇编语言

调用INT 21H总是输不出字母I(i)-(汇编初学者)

楼主sheep001()2005-04-01 11:52:02 在 其他开发语言 / 汇编语言 提问

代码如下:  
  ;源程序名:HELLO.ASM  
  ;功能:显示一个字符串  
   
  ;数据段  
  DSEG SEGMENT  
  MESSAGE DB   'aaaaaaa',0DH,0AH,24H  
  DSEG ENDS  
  ;代码段  
  CSEG SEGMENT  
  ASSUME   CS:CSEG,DS:DSEG  
  BEGIN:  
  MOV   AX,DSEG  
  MOV   DS,AX  
  MOV   DX,OFFSET   MESSAGE  
  MOV   AH,9  
  INT   21H  
  MOV   AH,4CH  
  INT   21H  
  CSEG ENDS  
  END  
   
   
   
  在MESSAGE变量中没有I(i)时运行正常,如  
  MESSAGE DB   'hello',0DH,0AH,24H  
  只要加入I(或i),程序运行时就会出错,不是停不了,就是不断的‘嘟’响  
  如:MESSAGE DB   'aaaiaaaa',0DH,0AH,24H  
   
  不知道是不是我电脑问题  
  我的CPU是P4   1.4  
  2000P  
  在CMD.exe下编译连接  
   
  就几行代码,昨天搞了半天,今天又搞了半天,真头大  
  大家帮帮忙,谢谢  
   
  问题点数:20、回复次数:5Top

1 楼longlijun(风之力)回复于 2005-04-01 12:29:38 得分 5

DSEG SEGMENT  
  MESSAGE DB   'aaaaiiiiiiiiiiiiiiiiiiiiiiiiiiiiiaaa',0DH,0AH,24H  
  DSEG ENDS  
  ;代码段  
  CSEG SEGMENT  
  ASSUME   CS:CSEG,DS:DSEG  
  BEGIN:  
  MOV   AX,DSEG  
  MOV   DS,AX  
  MOV   DX,OFFSET   MESSAGE  
  MOV   AH,9  
  INT   21H  
  MOV   AH,4CH  
  INT   21H  
  CSEG ENDS  
  END                   BEGIN                 这样在我的机器上可以Top

2 楼yxxng(好好学习,天天向上!)回复于 2005-04-01 12:59:31 得分 15

最后的END少了标号BEGIN。则是这样的:  
  0BD5:0000   61                         DB             61  
  0BD5:0001   61                         DB             61  
  0BD5:0002   61                         DB             61  
  0BD5:0003   61                         DB             61  
  0BD5:0004   69                         DB             69  
  0BD5:0005   61                         DB             61  
  0BD5:0006   61                         DB             61  
  0BD5:0007   61                         DB             61  
  0BD5:0008   0D0A24                 OR             AX,240A  
  0BD5:000B   0000                     ADD           [BX+SI],AL  
  0BD5:000D   0000                     ADD           [BX+SI],AL  
  0BD5:000F   00B8D50B             ADD           [BX+SI+0BD5],BH  
  0BD5:0013   8ED8                     MOV           DS,AX  
  0BD5:0015   BA0000                 MOV           DX,0000  
  0BD5:0018   B409                     MOV           AH,09  
  0BD5:001A   CD21                     INT           21  
  0BD5:001C   B44C                     MOV           AH,4C  
  0BD5:001E   CD21                     INT           21  
   
  改为END   BEGIN就行了!Top

3 楼sheep001()回复于 2005-04-01 16:03:48 得分 0

真是少了个BEGIN,现在可以了  
  谢谢longlijun(风之力)   ,   yxxng(多了一个三角,继续努力!)    
  Top

4 楼shiwen2005(南昌的)回复于 2005-04-01 16:39:42 得分 0

楼主     MOV   AH,4CH这句是干吗的   我在书中怎么找不到Top

5 楼303(吴志坤)回复于 2005-04-05 07:30:48 得分 0

我是初学者,MOV   AH,4CH 是 终止当前程序并返回调用程序的意思  
  这是Dos系统功能调用(Int   21H)里的Top

相关问题

  • vc++怎末调用汇编
  • vb、delphi中如何调用汇编?
  • VB中如何调用汇编指令?
  • C中调用汇编的规则?
  • c++builder内如何调用汇编???????????
  • c和汇编互相调用
  • 急,怎样在C中调用汇编?
  • 汇编调用fork的问题
  • 如何在汇编中调用函数?
  • Delphi中调用汇编,但汇编中好象不能用integer?

关键词

  • 代码
  • ds
  • db
  • bd5
  • ah
  • 调用
  • db610
  • dh
  • bx+si
  • 程序

得分解答快速导航

  • 帖主:sheep001
  • longlijun
  • yxxng

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo