鱼C论坛

 找回密码
 立即注册
查看: 564|回复: 6

初学汇编,遇到点问题

[复制链接]
最佳答案
0 
发表于 2018-2-8 16:19:17 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
以下三张图是连续的
图一到图二我没操作es,为什么es:0008的值从49变为30?
图二到图三,执行mov es:[0008],al后,为什么它的值还是30没变?

1

1

2

2

3

3
最佳答案
0 
 楼主| 发表于 2018-2-8 21:27:10 | 显示全部楼层
有大佬吗??
最佳答案
12 
发表于 2018-2-8 22:47:45 | 显示全部楼层
贴出程序看看吧
最佳答案
0 
 楼主| 发表于 2018-2-9 08:49:04 | 显示全部楼层
erh 发表于 2018-2-8 22:47
贴出程序看看吧

就是实验九
assume cs:code,ds:data,ss:stack
data segment
    db 'Welcome To Assembly'
    db 02h,24h,71h
data ends

stack segment stack
    dw 8 dup(0)
stack ends

code segment
start:
    mov ax,data
    mov ds,ax
    mov ax,stack
    mov ss,ax
    mov sp,10h
   
    xor bx,bx   
    mov cx,3
    mov ax,0b872h


s0: push cx
    push ax
    push bx
   
    mov es,ax
   
    mov si,0
    mov di,0
   
    mov cx,13h

s1: mov al,ds:[si]
    mov es:di,al
    inc si
    add di,2
    loop s1
   
    mov di,1
    pop bx
    mov al,ds:13h[bx]
    inc bx
   
    mov cx,13h
s2: mov es:[di],al
    add di,2
    loop s2
        
    pop ax
    add ax,0ah

    pop cx
    loop s0
   
    mov ax,4c00h
    int 21h
code ends
end start
最佳答案
12 
发表于 2018-2-12 11:39:32 | 显示全部楼层
怀疑0b872h作为es的值是不是跟你在操作系统一些程序冲突?换一个值试试。比如0774h等值......
最佳答案
1 
发表于 2018-2-17 11:17:29 | 显示全部楼层
erh 发表于 2018-2-12 11:39
怀疑0b872h作为es的值是不是跟你在操作系统一些程序冲突?换一个值试试。比如0774h等值......

兄弟,你DEBUG看的地址是显存的地址,0b872:0008=49就是说这个地址显示的字符此时是‘I’
执行下一条指令后,显示的内容发生了变化,所有显存的数值发生了改变,0b872:0008此时=30,也就是说该位置显示的是‘0’;
这个显存位置好像是屏幕第12行左右吧,你自己仔细看看
最佳答案
1 
发表于 2018-2-17 11:20:15 | 显示全部楼层
回复错了对象,不好意思,你看上一条回复,看是不是那样。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2018-8-19 08:20

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表