调用INT 21H总是输不出字母I(i)-(汇编初学者)
代码如下:
;源程序名: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




