汇编语言显存的段地址和偏移地址的问题
assumecs:codedatasegmentdb'welcometomasm!'dataendscodesegmentstart:movax,datamovds,ax...
assume cs:code
data segment
db 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov si,0
mov di,10*160+80 ;第十行中间
mov cx,16
s1: mov al,ds:[si]
mov ah,00000010B ;绿色
mov es:[di],ax
inc si
inc di
inc di
loop s1
mov si,0
mov di,11*160+80 ;第十一行中间
mov cx,16
s2: mov al,ds:[si]
mov ah,00100100B ;绿底红色
mov es:[di],ax
inc si
inc di
inc di
loop s2
mov si,0
mov di,12*160+80 ;第十二行中间
mov cx,16
s3: mov al,ds:[si]
mov ah,01110001B ;白底蓝色
mov es:[di],ax
inc si
inc di
inc di
loop s3
mov ax,4c00h
int 21h ;如果要看到完整的显示请输入:“-g 4c”,即立即运行到此条指令
code ends
end start
以下是问题:
请问这个这条指令mov di,10*160+80 我的理解是:1行80个字符占160个字节(10*160字节=10行),可设第10行的第80个字节,即中间。但是我实在不明白第10行他的段地址和偏移地址具体是多少?请不要复制,网上都找过,没有满意的答案! 展开
data segment
db 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov si,0
mov di,10*160+80 ;第十行中间
mov cx,16
s1: mov al,ds:[si]
mov ah,00000010B ;绿色
mov es:[di],ax
inc si
inc di
inc di
loop s1
mov si,0
mov di,11*160+80 ;第十一行中间
mov cx,16
s2: mov al,ds:[si]
mov ah,00100100B ;绿底红色
mov es:[di],ax
inc si
inc di
inc di
loop s2
mov si,0
mov di,12*160+80 ;第十二行中间
mov cx,16
s3: mov al,ds:[si]
mov ah,01110001B ;白底蓝色
mov es:[di],ax
inc si
inc di
inc di
loop s3
mov ax,4c00h
int 21h ;如果要看到完整的显示请输入:“-g 4c”,即立即运行到此条指令
code ends
end start
以下是问题:
请问这个这条指令mov di,10*160+80 我的理解是:1行80个字符占160个字节(10*160字节=10行),可设第10行的第80个字节,即中间。但是我实在不明白第10行他的段地址和偏移地址具体是多少?请不要复制,网上都找过,没有满意的答案! 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |