
masm5.0汇编问题,编译过程无错误,但是最后输出无结果
我的文件名为:dai程序代码如下:DATASEGMENTDAT0DB12H,29H,34H,46H,57H,66H,71H,88HDAT1DB89H,77H,65H,53...
我的文件名为:dai
程序代码如下:
DATA SEGMENT
DAT0 DB 12H,29H,34H,46H,57H,66H,71H,88H
DAT1 DB 89H,77H,65H,53H,41H,32H,24H,16H
DAT2 DB 9 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
LEA SI, DAT0
LEA DI, DAT1
LEA BX, DAT2
MOV CX,8
CLC
CLD
AGAIN:LODSB
ADC AL,[DI]
DAA
MOV [BX],AL
INC DI
INC BX
LOOP AGAIN
MOV AL,0
MOV AL,0
MOV [BX],AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
本人是汇编初学者,急求解决方案,谢谢啦···· 展开
程序代码如下:
DATA SEGMENT
DAT0 DB 12H,29H,34H,46H,57H,66H,71H,88H
DAT1 DB 89H,77H,65H,53H,41H,32H,24H,16H
DAT2 DB 9 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
LEA SI, DAT0
LEA DI, DAT1
LEA BX, DAT2
MOV CX,8
CLC
CLD
AGAIN:LODSB
ADC AL,[DI]
DAA
MOV [BX],AL
INC DI
INC BX
LOOP AGAIN
MOV AL,0
MOV AL,0
MOV [BX],AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
本人是汇编初学者,急求解决方案,谢谢啦···· 展开
3个回答
展开全部
你这个程序,没有屏幕输出显示的代码。
所以,运行后屏幕上无显示并直接返回DOS,是对的。
若要加上显示部分,代码会比较长。需要先将压缩BCD分离,再转换成ASCII,再显示。
你这个程序,是用来练习串指令和BCD码运算的。它正确的用法不是直接运行,而是在调试器DEBUG中调试运行,通过单步、断点等方式检查运行的中间结果和最后结果(DAT2的内容)。
所以,运行后屏幕上无显示并直接返回DOS,是对的。
若要加上显示部分,代码会比较长。需要先将压缩BCD分离,再转换成ASCII,再显示。
你这个程序,是用来练习串指令和BCD码运算的。它正确的用法不是直接运行,而是在调试器DEBUG中调试运行,通过单步、断点等方式检查运行的中间结果和最后结果(DAT2的内容)。
追问
非常感谢你的热心回答,嗯,我在程序中加了 :mov ah 9 int 21h,就有乱码输出。再请教您个问题,因为我想边学习加法,乘···这些指令,边学习,边运行下,这样记忆和理解也深刻些,你能给我一个完整的框框文件(开头和结尾都差不很多),那么我只要在中间修改代码就行··
追答
9号DOS系统功能调用,是用来显示‘$'符号结束的ASCII码构成的字符串的。
你数据区的内容并不是ASCII码,而是压缩的BCD码,所以显示出来就是乱码。又因为你没有在字符串结束的地方加上’$'字符,所以显示会一直继续,直到遇到'$'。
程序要显示,都要将内容转为正确的ASCII才行。
比如,你要显示 79H这个字节的两位压缩BCD码,必须先将它分离转成37H(‘7’这个字符的ASCII)和39H(字符‘9’),再依次显示。
对于37H,是从79H中用“与”运算指令提取出70H,右移4位转成07H,再用加法加上30H转为37H。
而39H的生成除了不需要移位以外,跟上面一样。
如果需要框架,可以自己随意写。
比如,要练习 z = x 和 y的运算,可以建这样一个程序框架:
.MODEL SMALL
.DATA
X DB 1, 2, 3
Y DB 4, 5, 6
Z DB 7, 8, 9
.CODE
.STARTUP
; 这里可以写运算指令
.EXIT
END
展开全部
哈哈,信息里说缺少了堆栈段,加上试试看
更多追问追答
追问
我是将教材上的程序输入到masm5.0中,如果要加堆栈段,代码怎写?我不懂,求指教··
追答
一样的,书上必定还有堆栈段的部分,例如:
STACK SEGMENT
.......
STACK ENDS
参照一下试试看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询