初阶九求助?
assume cs:codesg,ds:datasg,ss:stacksgdatasg segment
db 'Welcome to masm!'
db 02h,24h,71h
datasg ends
stacksg segment
dw 8 dup(0)
stacksg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov ax,0b872h
mov es,ax
mov bx,0
mov di,0
mov si,16
mov cx,3
s0:push cx
push si
push di
mov cx,11
s: mov al,
mov es:,al
mov ah,
mov es:,ah
add di,2
add bx,1
loop s
pop di
pop si
pop cx
add di,80
add si,1
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
实验九,在DEBUG中二次用查的结果不一样?
第一次,D B872:0 F
第二次,D B872:0
ES 段地址为:B872,DI=0
为什么二次查的结果不一样,而且下面往,B872:0写东西,写不进去?? 实验九,错在哪里了,真的找不到拉!
第46条: ADD DI,80 ; DI增加80个字节,换到下一行同一列位置,这里有问题么? B872:000为什么一直在变呀???
实验九,得不到正确结果,请高手指点{:1_1:} 费了好几个小时,找到问题改好了:loveliness:
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db 'Welcome to masm!'
db 02h,24h,71h
datasg ends
stacksg segment
dw 8 dup(0)
stacksg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov ax,0b872h
mov es,ax
mov bx,0
mov di,0
mov si,16
mov cx,3
s0:push cx
push si
push di
push bx
mov cx,16
s: mov al,
mov es:,al
mov ah,
mov es:,ah
add di,2
add bx,1
loop s
pop bx
pop di
pop si
pop cx
add di,160
add si,1
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
程序虽得到了正确结果,但还有问题:
段B872,为什么写不进去数据???,几个用D命令查看,为什么B872:0内的数据一直在变?我与进去的数据确找不到…………,那么,为什么还能得到结果????
请高手回{:1_1:} 难道是堆栈的操作?:dizzy: 小靚同学Leon 发表于 2014-8-20 23:33
难道是堆栈的操作?
堆栈只是为,保存数据不被更改;
如我前面一直错找不到原因,就是BX,没保存;
现在是我在DEBUG里用D命查看段地址B872内的,数据一直在改变;如果说改变是因为,显卡一直在刷新的话,那么,我为什么还能得到正确的结果:dizzy: haiouda 发表于 2014-8-21 20:29
堆栈只是为,保存数据不被更改;
如我前面一直错找不到原因,就是BX,没保存;
只能说明最后确实是写进去了,但是内存数据却是在动态的变化着。
好像说不通,期待精彩答案{:1_1:} ⊙﹏⊙b汗,上课没认真,看着都很熟悉,凑到一起就不认识了
页:
[1]