zoukankan      html  css  js  c++  java
  • 汇编实验九(王爽)

    编程:在屏幕中间分别显示绿色,绿色红底,白底蓝色的字符串 'welcome to masm!'.

    assume cs:code,ds:data,ss:stack
    
    data segment
        db 'welcome to masm!'
        db 00000010b,00100100b,01110001b    #分别代表绿色、绿色红底、白底蓝色
    data ends
    
    stack segment
        dw 0,0,0,0,0,0,0,0                  #定义一个栈段,来用于临时储存值
    stack ends
    
    code segment
    start:  mov ax,data
            mov ds,ax
            mov ax,0b800h #在汇编源程序中,数据不能以字母开头!
            mov es,ax
            mov ax,stack
            mov ss,ax
            mov sp,16
    
            mov bx,0a0h    #好像我的电脑,如果在0处写入第一行数据,那么最后的话第一行会被吃掉,因此在内存第二行开始处写入
            mov di,16      #用于表示表示颜色属性字节数据的偏移地址
            mov cx,3       #循环三次,分别向每行中写入数据
        s:  push cx
            push bx        #保存此时要写入内存的首地址,方便后面跳行
            mov si,0
            mov dl,ds:[di] #获取data段内表示字符属性的字节
            
            mov cx,16
       s1:  mov al,ds:[si]   #在data段中取出每个字母
            mov es:[bx],al   #向指定内存中写入字母
            mov es:[bx+1],dl #写入属性
    
            add bx,2      
            inc si
            loop s1
    
            pop bx
            add bx,0a0h    #跳行
            inc di         #跳到下一个属性
            pop cx
            loop s
    
            mov ax,4c00h
            int 21h
    
    code ends
    
    end start

    运行结果如下:

     注意哦!在用debug跟踪调试的时候,显示缓冲区的那段内存中的数据是不会和我们写入数据相同,可能因为要显示数据,所有比较特别,所以,在跟踪调试之前,一定要先运行程序!!!

  • 相关阅读:
    [cdq分治][树状数组] Bzoj P3262 陌上花开
    [Prufer序列] Bzoj P4766 文艺计算姬
    [欧拉回路][并查集] Bzoj P3706 反色刷
    [欧拉回路][dfs] Uoj #117 欧拉回路
    [并查集][Tarjan] Bzoj P5017 炸弹
    day18
    day17
    树形DP学习笔记
    [分治]JZOJ 6308 中间值
    [贪心][完全背包]JZOJ 6309 完全背包
  • 原文地址:https://www.cnblogs.com/jane315/p/12902690.html
Copyright © 2011-2022 走看看