(2011.11.01)汇编_王爽_第09章_学习小结

来源:互联网 发布:淘宝运营投资计划表 编辑:程序博客网 时间:2024/06/05 05:36
  

(2011.11.01)汇编_王爽_第09章_学习小结

本章内容:

1. 转移指令——同时修改CS和IP的指令的统称。

2. 段内转移——只修改IP

           ——短转移——IP修改范围为 -128至127.

                      ——近转移——IP修改范围为 -32768 至 32767

3. 段间转移——同时修改CS和IP

4. offset功能是取得标号的偏移地址。

5. jmp无条件转移指令,可以只修改IP,也可以同时修改CS和IP

6. jmp short 标号[IP]  jmp near 标号[IP]  jmp far 标号[CS:IP] jmp 16位的reg[IP]

7. jmp word ptr 内存单元地址(段内转移)  jmp dword ptr 内存单元地址(段间转移)

8. jcxz 标号(如果(cx) = 0, 转移到标号处执行。)

 

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

 

; 程序名称:实验9_根据材料编程_在屏幕中间显示不同颜色的字符串.asm; 程序功能:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'Welcome to masm' ; 程序材料:; 在内存中,有一个 80 * 25 彩色字符模式显示缓冲区,B8000H - BFFFFH 共 32KB 的空间。; 需记忆:向这个地址空间写入数据,写入的内容将立即出现在显示器上。; 显示器可以显示25行,每行80个字符,每个字符可有256种属性(背景色,前景色,闪烁,高亮等组合信息); 一行共有80个字符,占160个字节。; 一个字符在内存中占两个字节,(偶地址)低位存放字符的ASCII码,(奇地址)高位存放字符的属性。; 例:; 在B8000H至B8F9FH为第一屏(25行,9+F=25-1),其中,偏移地址 000 - 09F 对应显示器上的第一行,(9F = 10 * 16 - 1); 属字节的格式:;               7  6  5  4  3  2  1  0;               BL R  G  B  I  R  G  B; 当它们的位数为1的时候会被激活:BL(7):闪烁,(654)背景,I(3)高亮,(210)前景色,R(4,2)红色,G(5,1)绿色,B(6,0)绿色.; 注意:; 闪烁的效果必须在全屏DOS方式下才能看到。 ; 程序分析:; 简单地说,编写该程序的方法就是将字符放到B8000H - BFFFFH的空间就可以了。; 那么,这里可以使用mov 指令,还有loop指令。 assume cs:code, ds:data ; 开始定义数据段,也就是题目要求的字符data segment    db 'welcome to masm!'data ends ; 开始定义代码段,并且设定程序执行的入口code segmentstart:    mov ax, data       ; 找到字符串的起点    mov ds, ax     mov al, 8          ; 设定段地址    mov ah, 12    mov es, ax        mov bx, 31          ; 设定字符偏移地址的起点,列    add bx, 384         ; 行    mov si, 0           ; 一行有80个字符,要显示的有15个字符    mov di, 0           ; 要将字符放到中间,先设定中点为40,然后向两间展开                        ; 也就是说,左边是40 - 7 = 33, 33 - 1 = 31                        ; 减1原因,由零开始    mov cx, 15          ; 循环十五次    ; 先将 'welcome to masm!' 这十五个字符放入到屏幕中间putcharin:    mov al, ds:[si]     ; 放入字符    mov es:[bx+di], al    inc di        ; 开始设置字体颜色,但由于每个字符串的颜色不同,所以这里需要设置几个循环跳点    cmp si, 7    jae near ptr c7     ; >=7时,跳到C7    c0:     mov al, 01000000B   ; 绿色        jmp near ptr endloop c7:    cmp si, 11    jae near ptr c11        mov al, 00100100B   ; 绿底红色           jmp near ptr endloop    c11:    mov al, 01110001B       ; 白底蓝色 endloop:    mov es:[bx + di], al    inc si    inc di    loop putcharin        mov ax, 4c00h    int 21hcode    endsend start


   

            

原创粉丝点击