鱼C论坛

 找回密码
 立即注册
查看: 3290|回复: 8

[技术交流] 关于试验九--小甲鱼老师视频教程里的错误

[复制链接]
发表于 2017-4-19 09:55:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
用图说话

给AX初始的赋值是正确的

给AX初始的赋值是正确的

这个地方的ADD就出错了,细心的朋友们可以计算下,加出来的结果

这个地方的ADD就出错了,细心的朋友们可以计算下,加出来的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-4-19 10:02:27 | 显示全部楼层
以下是本人琢磨好久弄出来的,加载入DEBUG后,不要单步调试,直接用G命令跳到“MOV AX,4C00H”处,即可看到效果
assume cs:code,ds:data,ss:stack

data segment
                db 'welcome to masm!'
                db 02h,24h,71h
data ends
stack segment
                dw 8 dup (0)
stack ends
code segment
start:        mov ax,data
                mov ds,ax
                mov ax,stack
                mov ss,ax
                mov sp,16
                mov bx,0
                mov si,0
                mov di,0
                mov ax,0b872h
                mov es,ax
                mov cx,3
        s:        push cx
                push si
                push di
                xor bx,bx
                mov cx,16
        s1:        mov al,[bx]
                mov es:[si],al
                mov dl,ds:[di+16]
                mov es:[si+1],dl
                inc bx
                add si,2
                loop s1
               
                pop di
                inc di
                pop si
                add si,160
                pop cx
                loop s

               
                mov ax,4c00h
                int 21h
code ends
end start
               
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-21 22:56:33 | 显示全部楼层
这个是没有错的.....0b872+0a=b87c  是段地址,,左移一位才是偏移地址,小甲鱼老师说的很清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-22 08:41:21 | 显示全部楼层
云启 发表于 2017-4-21 22:56
这个是没有错的.....0b872+0a=b87c  是段地址,,左移一位才是偏移地址,小甲鱼老师说的很清楚

那你按照这个数据加一下看看,出来的结果能不能和段地址0b872,偏移地址为0时候,同向下偏移160个字节段的结果一致?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-22 08:42:59 | 显示全部楼层
云启 发表于 2017-4-21 22:56
这个是没有错的.....0b872+0a=b87c  是段地址,,左移一位才是偏移地址,小甲鱼老师说的很清楚

然后你再用DEBUG单步调试下看看,当执行+0a这一步后,看看偏移地址跳到哪了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-22 10:57:42 | 显示全部楼层

并没有错正常跳转
捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-22 11:13:49 | 显示全部楼层
你和小甲鱼的编程和运行过程不一样,并不代表人家是错的,结果都是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-22 11:35:58 | 显示全部楼层
你的只修一次es段寄存器,然后si索引显存地址
b8720 + si......320......


,小甲鱼老师的每次外循环都会修改段寄存器
b872 + 0ah = b87c + 0ah = b886
第一行 用 b8720  + di
第二行 用 b87c0 + di
第三行 用 b8860 + di


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-22 11:57:43 | 显示全部楼层
我也认为小甲鱼老师没有错,0b872+0a 段地址 + 0a  = 0b8720+a0 全地址 + a0
a0 = 160字节  
跟你自己代码里 add si,160 效果是一样样儿的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 01:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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