|
发表于 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
偏移地址加1,物理地址加多少?物理地址也加1对吧?
那段地址加1,物理地址加多少?加16对吧?
段地址加10,物理地址加了多少?
10 * 16 = 160
加了160对吧
如果段地址不变,要变偏移地址,那偏移地址应该加多少?加160对吧?
160是个什么数字呢?
一行80个字符对吧?一个字符两个字节对吧?(一个是字符的值,另一个是字符的属性,就是前景色、背景色、是不是闪烁这些)
那么,80 * 2 = 160
物理地址加160就换到下一行了,没问题吧?
重要的是物理地址加了多少,不管是加段地址也好,还是加偏移地址也好,最终是导致物理地址改变了
|
|