zoukankan      html  css  js  c++  java
  • 王爽 汇编 实验10.1

    一、实验要求

     二、代码实现

     1 assume cs:code,ds:data
     2 
     3 data segment
     4     db 'welcome to masm!',0
     5 data ends
     6 
     7 code segment
     8 start:      mov dh,8            ;定义行(0-24)
     9             mov dl,3            ;定义列(0-79)
    10             mov cl,2            ;定义颜色
    11             mov ax,data
    12             mov ds,ax
    13             mov si,0            ;指向字符串的首地址
    14             call show_str        ;调用子程序
    15 
    16             mov ax,4c00h
    17             int 21h
    18         
    19 show_str:   push cx
    20             push si
    21 
    22             mov al,0A0h            ;每一行160个字节        
    23             dec dh                ;行号从0开始,需要减去1
    24             mul dh                ;求出行的偏移量(结果存放到了ax中)
    25             mov bx,ax            ;将行偏移量暂存到寄存器bx中
    26             
    27             mov al,2             ;一个数据2个字符,包含数据和颜色属性
    28             dec dl                ;列号从0开始,需要减去1
    29             mul dl                ;求出列偏移量(结果存放到了ax中)
    30                     
    31             add bx,ax            ;行和列的偏移量加在一起,就是该字符串首地址在显存中的偏移地址
    32             
    33             
    34             mov ax,0b800h        ;显存段地址
    35             mov es,ax            ;显存段地址保存到es寄存器中
    36             
    37             
    38             mov di,0             ;显存中传递列值
    39             mov ch,0
    40             mov al,cl            ;颜色数据保存到ax寄存器低位中
    41             
    42 s:          mov cl,ds:[si]        ;传递数据
    43             jcxz ok                ;至到原始数据偏移到数据0的时候,表明所有原始数据已处理完成
    44                                   ;然后跳转到标号ok
    45             
    46             mov es:[bx+di],cl      ;传递数据
    47             mov es:[bx+di+1],al    ;传递颜色
    48             
    49             inc si                ;每处理一个字节,偏移地址自增1
    50             add di,2              ;每处理二个字节(包含一个数据和一个颜色属性),偏移地址自增2
    51             jmp short s
    52 
    53 ok:         pop si
    54             pop cx            
    55             ret
    56 code ends
    57 end start

    三、实验结果

  • 相关阅读:
    swift基本数据类型的使用
    宏定义单例类
    开发必备宏定义大全
    GUI02
    GUI01
    浅谈代码块的加载顺序
    Java里的多态
    在java中this和super的使用
    冒泡排序的简单优化
    命令行传参和不定传参
  • 原文地址:https://www.cnblogs.com/TonyJia/p/12605503.html
Copyright © 2011-2022 走看看