实验9 怎么样改变段地址才能在中间显示
assume cs:code,ds:datadata segment
db 'Welcome To Masm!'
db 42h,29h,4ah
data ends
code segment
start:mov ax,data
mov ds,ax
mov bx,0
mov ax,0b840h;第一行中间地址
mov es,ax
mov si,0
mov ah,0
mov cx,16
s:mov al,
mov es:,al
mov es:,al
mov es:,al
mov al,ds:;送第一种颜色
mov es:,al
mov al,ds:;送第二种颜色
mov es:,al
mov al,ds:;送第三种颜色
mov es:,al
inc bx
add si,2
loop s
mov ax,4c00h
int 21h
code ends
end start
如题想知道怎么去改变段地址ES实现 在屏幕中间显示 字符呢
本帖最后由 莫名其妙 于 2012-3-9 17:28 编辑
mov ax,0b840h;第一行中间地址 这里用mov ax, 0B800h方便计算
; 当然你用B840h也可以不过后面计算显示器中间区域比较麻烦 还要计算当前位置到中间位置的偏移
;要想一步到位就直接0B8000H+中间位置的偏移[idata=160*12+2*30] 得出es 段地址 =B87C:000B
mov es,ax ;mov ax,0b87c
mov si,0 ;mov es,ax
;mov si,0bh
mov ah,0
mov cx,16
s:mov al, 这里上面改成B800H的计算方法要显示在中间需要每行加上idata 160*12+2*30
mov es:,al 这里是第一行显示字符 ES:160*12+2*30]
mov es:,al 这里 第二行显示字符 ES:160*12+2*30 +0a0h]
mov es:,al 这里第三行 ES:160*12+2*30 +140h]
mov al,ds:;送第一种颜色 下面的也要加 es: 160*12+2*30+1+偏移
mov es:,al
mov al,ds:;送第二种颜色
mov es:,al
mov al,ds:;送第三种颜色
mov es:,al
页:
[1]