|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
实验要求上说高位存放字符属性,小甲鱼给的参考答案第一个和第三个参考程序都是低位al存放字符属性,而第二个参考程序是高位ah存放字符属性,哪位大神指点指点啊,小弟新手,真的没弄明白啊!!第一个参考程序- assume cs:code,ds:data,es:table
- data segment
- db 'welcome to masm!'
- data ends
- table segment
- dw 4000 dup (0)
- table ends
- code segment
- start: mov ax,data
- mov ds,ax
- mov ax,0b800h
- mov es,ax
- mov bx,0
- mov si,0
- mov cx,16
-
- s0: mov ax,[bx]
- mov es:[bx+720h][si],ax
- mov al,2
- mov es:[bx+721h][si],al
- inc bx
- inc si
- loop s0
-
- mov bx,0
- mov cx,16
- mov si,160
- s1: mov ax,[bx]
- mov es:[bx+720h][si],ax
- mov al,36
- mov es:[bx+721h][si],al
- inc bx
- inc si
- loop s1
-
- mov bx,0
- mov cx,16
- mov si,320
- s2: mov ax,[bx]
- mov es:[bx+720h][si],ax
- mov al,113
- mov es:[bx+721h][si],al
- inc bx
- inc si
- loop s2
-
- mov ax,4c00h
- int 21h
- code ends
- end start
复制代码 第三个参考程序- assume cs:code,ds:data
- data segment
- db 'welcome to masm!'
- data ends
- code segment
- start: mov ax,data
- mov ds,ax
- mov bx,0 ;ds:bx指向data字符串
- mov ax,0b800h
- mov es,ax
- mov si,0 ;es:si指向显存
- mov cx,16
- s: mov al,[bx] ;字符赋值al
- mov ah,02h ;绿色
- mov es:[si].720h,ax ;写入第12行64列
- mov ah,14h ;绿底红色
- mov es:[si].7c0h,ax ;写入第13行64列
- mov ah,71h ;白底蓝色
- mov es:[si].860h,ax ;写入第14行64列
- inc bx ;指向下一字符
- add si,2 ;指向下一显存单元
- loop s
- mov ax,4c00h
- int 21h
- code ends
- end start
复制代码 第二个参考程序- 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 bx,0720h ;设置中间行中间列的首地址
- mov si,0
- mov cx,16
- s: mov ax,[si]
- mov ah,2h
- mov es:[bx],ax ;设置绿色字体
- mov ah,24h
- mov es:[bx].0a0h,ax ;设置绿底红色
- mov ah,71h
- mov es:[bx].0a0h.0a0h,ax ;设置白底蓝色
- inc si ;指向下一字符
- add bx,2 ;指向下一显存单元
- loop s
- mov ax,4c00h
- int 21h
- code ends
- end start
复制代码
0B800h开始的地址中写入内容,低地址(偶数位)存放字符的ASCII码
高地址(奇数位)存放字符的属性
如果物理地址为0b800:0001,那么开始的地址就不是偶数位了
就不能高地址存放字符的属性,只能是反过来。
|
|