汇编语言,用ax传递内存里的值,请帮忙分析一下,谢谢!!
本帖最后由 359853328 于 2013-11-7 10:19 编辑汇编代码:assume cs:codesg,ds:data
data segmentdb 'ABCDEF'data ends
codesg segmentstart:mov ax,datamov ds,axmov ax,0b800Hmov es,ax
mov bx,0mov si,0mov di,1mov cx,6
s:mov ax, ;1mov es:,ax ;2mov al,0caH ;3mov es:,al ;4inc bxadd si,2add di,2loop s
mov ax,4c00hint 21h
codesg ends
end start
单步执行以上代码发现在1和2处,ax传递ds:和es:内存是,结果如下先把ds:内存处的值赋值给ax,ax赋值后为4241H后把ax的值放到es:处,但是发现ax的值为0720H,不是原来的4241H,这个是怎么回事呢
单步执行3和4处,也是同样的问题,结果如下:先把CAH赋值到ax的低8位,
然后再把CAH从ax中放入es:内存中,发现ax的低八位给内存的值是07H,
搞了半天没有看懂ax中的值没有变化,但是ax传递给内存的值怎么不是ax的值呢
你第2步还没执行啊,执行后就变成了ax的值了 刚把代码跑了下,还真是你说的那样,同求大手解答。。。。。 呵呵
B8000H~B8F9F这个内存空间是字符模式的显示缓冲区,我希望在这个缓冲区放入我的字符,如:ABC,
希望屏幕输出我的字符 359853328 发表于 2013-11-7 13:50 static/image/common/back.gif
呵呵
B8000H~B8F9F这个内存空间是字符模式的显示缓冲区,我希望在这个缓冲区放入我的字符,如:ABC,
希望 ...
要输出字符串,在DOS下只能调用中断,直接写入缓冲区在WINDOWS系统下是不允许的。 先把ds:内存处的值赋值给ax,ax赋值后为4241H
后把ax的值放到es:处,但是发现ax的值为0720H,不是原来的4241H,这个是怎么回事呢
我单步的时候 为啥 AX没有变成0720H呢? 显示4241而后紧接着就是42CA 从来没有变成0720H哦
页:
[1]