ms1234 发表于 2022-8-28 01:21:34

实验9,换行的问题,救急

这是小甲鱼老师的源代码,
为什么换行赋值是: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

stacksegment
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:
             mov es:,al
               inc si
               add di,2
               loop s1
               
               
               mov di,1
               pop bx
               mov al,ds:10h
               inc bx
               
               mov cx,10h
               
               s2:mov es:,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就换到下一行了,没问题吧?
重要的是物理地址加了多少,不管是加段地址也好,还是加偏移地址也好,最终是导致物理地址改变了

ms1234 发表于 2022-8-28 01:34:41

人造人 发表于 2022-8-28 01:33
偏移地址加1,物理地址加多少?物理地址也加1对吧?
那段地址加1,物理地址加多少?加16对吧?
段地址加1 ...

好的好的,谢谢大佬,我懂了,感谢感谢,太感谢了
页: [1]
查看完整版本: 实验9,换行的问题,救急