ylhqalyb 发表于 2012-3-18 20:26:43

怪异问题,求解!!

在实验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-18 20:26:44

本帖最后由 莫名其妙 于 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



ylhqalyb 发表于 2012-3-18 20:51:30

找到问题了..一次传送了一个字进去,而内存中存放的是字节所以清零了

不是一个人 发表于 2012-3-19 18:57:09

你的数据段DS写的300H啊怎么传递给20H啊

不是一个人 发表于 2012-3-19 18:59:00

试试这个吧
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



小叶 发表于 2012-3-20 19:45:11

mov ax,300h

ylhqalyb 发表于 2012-3-20 20:22:45

嗯 就是莫名其妙同志说的,其实每次穿进去的值都是00XX,00把原来的值给覆盖了,所以最后的结果都成了0000
页: [1]
查看完整版本: 怪异问题,求解!!