风度翩翩√爆 发表于 2013-11-3 19:43:03

关于汇编语言实验9的一些问题

今天听完小甲鱼汇编视频的讲解,实验9有些疑惑。请求大侠们给小生详细解释下。 以下代码是网络上的一种解法,过程方面不是很理解。求搭救。谢了。

; ============================================================================================
;
; 王爽汇编实验9根据材料编程
; 要求:编程实现在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串 'welcome to masm!' .
; 在80*25彩色字符模式下,显示器可显示25行,每行80个字符,每个字符可以有256种属性
; 02H表示黑底绿色
; 00100100B表示绿底红色
; 01110001B表示白底蓝色
;
; ============================================================================================
assume cs:code

data segment
db 'welcome to masm!'
data ends

code segment
start: mov ax,data
      mov ds,ax      
                mov ax,0b872h
                mov es,ax      
                mov si,0
            mov di,0
                mov cx,16   
               
      s:      mov dl,2h                ;这里开始不明白了,这是有什么用。
            mov es:,dl
                mov dl,24h
                mov es:,dl
                mov dl,71h
                mov es:,dl
                mov al,
                mov es:,al   
                mov es:,al
                mov es:,al
                inc si
                add di,2
                loop s                                     ;这一段想了很久,不知道它的思路,能不能解释下,每一步。
               
                mov ax,4c00h
                int 21h
               
code ends

end start               


1236 发表于 2013-11-3 20:13:16

这不是循环了16次么

ソ孤单背影 发表于 2013-11-3 20:57:46

高字节表示 字符的属性(颜色)低字节表示字符的ASCII码

先把颜色和字符的ASCII码值赋值给ah和   al再将ax写入你要显示的行和列

s:   mov al,            ;字符赋值al

   mov ah,02h             ;绿色

   mov es:.720h,ax    ;写入第12行64列

   mov ah,14h             ;绿底红色

   mov es:.7c0h,ax    ;写入第13行64列

   mov ah,71h             ;白底蓝色

   mov es:.860h,ax    ;写入第14行64列

   inc bx               ;指向下一字符

   add si,2               ;指向下一显存单元

   loop s


随风听雨雪 发表于 2013-11-3 21:45:47

就是在哪一行显示什么颜色,

锐利坚定 发表于 2013-11-6 09:56:43

不知道啊。想要高手回答一下。

风吹绿野 发表于 2013-11-18 22:40:39

路过看看哈

阔怀 发表于 2015-8-12 12:22:55

{:1_1:}
页: [1]
查看完整版本: 关于汇编语言实验9的一些问题