|
发表于 2013-8-16 16:48:59
|
显示全部楼层
看来论坛里没什么高手啊,还是高手不屑于这种简单问题,还是我来回答吧。
先不谈这个程序的优化问题,从整体上看,你的思路是没错的,你很会灵活变通,比起只会一味模仿别人的人来说,是很不错的。
这个程序你错就错在,在汇编源程序中,不该用ds:[280h]来表示这个最终地址,因为,汇编规定:在源程序中,mov ax,[2]这种形式它等价于mov ax,2. 所以在汇编源程序中,你只能用ds:[寄存器]的形式来表示。而
ds:[280h]这种形式仅在debug中编写程序时适用,注意区别。下边,我对你的程序进行了下改动,并成功运行了。
assume cs:code
code segment
start: mov ax,0b800h
mov ds,ax
mov bx,280h
mov dx,0ac65h
mov ds:[bx],dx ;之所以不用ds:[280h],这是因为在汇编程序中,[280h]不能表示偏移地址,它只表示280h这个数字。ds:[280],这种情况仅在debug中,[280h]才表示偏移地址,注意区别。
q: mov ax,4c00h
int 21h
code ends
end start
这是运行结果:绿底红e
|
|