怪异问题,求解!!
在实验4中第一题为:向内存0:200-0:23F中依次传入0-63(3FH)使用中转寄存器bx一切正常,但是如果用以下方式就会在给内存赋值后很怪异的最后变成0
源码如下
assume cs:code
code segment
start: mov ax,300h
mov ds,ax
mov cx,64
s: mov bx,cx
mov ,bx
loop s
mov ax,4c00h
int 21h
code ends
end start
本帖最后由 莫名其妙 于 2012-3-20 17:14 编辑
assume cs:code
code segment
start: mov ax,300h这里就算你笔误了 {:5_103:}安全空间是0:200h所以应该是mov ax,0020h开始的
mov ds,ax
mov cx,64
s: mov bx,cx;这里传送进去的是0040h是一个字节比如bx=00 40这是16位 ds: = 00这个表示8位
mov ,bx;这里 是按位输入的 低八位 高八位你每次传送进去数据的高八位00 给上一次进来的低八位的数据覆盖了 所以你看到最后显示的都是00
loop s
mov ax,4c00h
int 21h
code ends
end start
找到问题了..一次传送了一个字进去,而内存中存放的是字节所以清零了 你的数据段DS写的300H啊怎么传递给20H啊 试试这个吧
assume cs:code
code segment
start: mov ax,20h
mov ds,ax
mov cx,64
s: mov bl,cx
mov ,bl
loop s
mov ax,4c00h
int 21h
code ends
end start
mov ax,300h 嗯 就是莫名其妙同志说的,其实每次穿进去的值都是00XX,00把原来的值给覆盖了,所以最后的结果都成了0000
页:
[1]