汇编语言向显存B800段写入数据无效,求解
ASSUMECS:CODE,DS:DATADATASEGMENTDB'WELCOMETOMASM!'DATAENDSCODESEGMENTSTART:MOVAX,DATA...
ASSUME CS:CODE,DS:DATADATA SEGMENT DB 'WELCOME TO MASM!'DATA ENDSCODE SEGMENTSTART: MOV AX,DATA MOV DS,AX MOV AX,0B800H MOV ES,AX MOV BX,0 MOV SI,0 MOV CX,16S: MOV AL,[BX] MOV AH,2 MOV ES:[SI],AX INC BX ADD SI,2 LOOP S MOV AX,4C00H INT 21HCODE ENDSEND START
使用DEBUG查看运行状态,发现执行MOV ES:[SI],AX这一句后,B800:0的内容根本不是0257(输出绿色W字母),跪求高手解释…… 展开
使用DEBUG查看运行状态,发现执行MOV ES:[SI],AX这一句后,B800:0的内容根本不是0257(输出绿色W字母),跪求高手解释…… 展开
4个回答
展开全部
B800:0的内容根本不是0257(输出绿色W字母),跪求高手解释……
----
B800:0的内容,位置是屏幕的左上角。
输出绿色W字母之后,再用 DEBUG 操作,屏幕就滚动,屏幕的左上角,就不是绿色W字母了。
B800:0的内容,显然就不是0257了。
----
B800:0的内容,位置是屏幕的左上角。
输出绿色W字母之后,再用 DEBUG 操作,屏幕就滚动,屏幕的左上角,就不是绿色W字母了。
B800:0的内容,显然就不是0257了。
更多追问追答
追问
假设屏幕有内容,执行.exe文件,没有任何反应,cls清屏后再执行.exe就可以在第一行正常显示,请问向显存中写入的数据难道不会覆盖当前的屏幕状态从而改写第一行的内容吗?
追答
假设屏幕有内容,执行.exe文件,没有任何反应,
--可能滚动出去了。
cls清屏后再执行.exe就可以在第一行正常显示,
--原来屏幕没有内容,执行后,没有滚动,即可看见。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用debug运行连接后的exe文件,再输入G命令就OK了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
cls再运行,兄弟我和你的程序很接近
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
调试的时候最好不要使用最上面的行,要不你程序调试的时候,容易滚到屏幕外,你就看不到了。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询