鱼C论坛

 找回密码
 立即注册
查看: 1697|回复: 2

[已解决]实验9,换行的问题,救急

[复制链接]
发表于 2022-8-28 01:21:34 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
这是小甲鱼老师的源代码,
为什么换行赋值是:add ax,0ah
给es段地址加10(0ah)就是换行了
为什么不是改变偏移地址实现换行呢?
来个大佬解释一下呀,万分感激




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,10h
                 
                 xor bx,bx
              mov ax,0b872h
                 mov cx,3
        s3:  push cx
             push ax
                 push bx
                 
                 mov es,ax
                 
                 mov si,0
                 mov di,0
                 
                 mov cx,10h
                 
                 
        s1: mov al,ds:[si]
             mov es:[di],al
                 inc si
                 add di,2
                 loop s1
                 
                 
                 mov di,1
                 pop bx
                 mov al,ds:10h[bx]
                 inc bx
                 
                 mov cx,10h
                 
                 s2:mov es:[di],al
                 add di,2
                 loop s2
                 
                 pop ax
                 add ax,0ah  (就是这里)
                 
                 pop cx
                 loop s3
                 mov ax,4c00h
                 int 21h
                 code ends
                 end start
最佳答案
2022-8-28 01:33:32
偏移地址加1,物理地址加多少?物理地址也加1对吧?
那段地址加1,物理地址加多少?加16对吧?
段地址加10,物理地址加了多少?
10 * 16 = 160
加了160对吧
如果段地址不变,要变偏移地址,那偏移地址应该加多少?加160对吧?
160是个什么数字呢?
一行80个字符对吧?一个字符两个字节对吧?(一个是字符的值,另一个是字符的属性,就是前景色、背景色、是不是闪烁这些)
那么,80 * 2 = 160
物理地址加160就换到下一行了,没问题吧?
重要的是物理地址加了多少,不管是加段地址也好,还是加偏移地址也好,最终是导致物理地址改变了

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

使用道具 举报

发表于 2022-8-28 01:33:32 | 显示全部楼层    本楼为最佳答案   
偏移地址加1,物理地址加多少?物理地址也加1对吧?
那段地址加1,物理地址加多少?加16对吧?
段地址加10,物理地址加了多少?
10 * 16 = 160
加了160对吧
如果段地址不变,要变偏移地址,那偏移地址应该加多少?加160对吧?
160是个什么数字呢?
一行80个字符对吧?一个字符两个字节对吧?(一个是字符的值,另一个是字符的属性,就是前景色、背景色、是不是闪烁这些)
那么,80 * 2 = 160
物理地址加160就换到下一行了,没问题吧?
重要的是物理地址加了多少,不管是加段地址也好,还是加偏移地址也好,最终是导致物理地址改变了

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

使用道具 举报

 楼主| 发表于 2022-8-28 01:34:41 From FishC Mobile | 显示全部楼层
人造人 发表于 2022-8-28 01:33
偏移地址加1,物理地址加多少?物理地址也加1对吧?
那段地址加1,物理地址加多少?加16对吧?
段地址加1 ...

好的好的,谢谢大佬,我懂了,感谢感谢,太感谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 11:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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