zoukankan      html  css  js  c++  java
  • 王爽汇编语言实验9

    首先看一下效果:

    接下来具体分析一下:

    第一步划分段,首先是数据段:来保存字符串“welcome to masm!”。

    data segment
        db 'welcome to masm!'
        db 00000010B       ;1
        db 00100100B       ;2
        db 01110001B       ;3
    data ends 

    1,2,3表示颜色属性,他用一个字节保存,不同的位对应不同的颜色。这里由于有三行,所以定义了三个,每个颜色的属性都不一样。

    接下来是栈段:

    stack segment stack
        db 128 dup (0)
    stack ends 

    最后是代码段。

    code segment
    
        start:mov ax,stack
            mov ss,ax
            mov sp,128
    
            mov ax,data 
            mov ds,ax
    
            mov ax,0b800H    ;确定数据到哪里去
            mov es,ax
    
            mov si,0
            mov di,160*10+30
            mov bx,16
            mov dx,0
            mov cx,3
    masm:   push bx
            push cx 
            push si
            push di
    
            mov dh,ds:[bx]    ;dx分为两部分,一部分用来保存颜色属性,一部分用来保存字符的ASCII
    ;由于dx寄存器是16位的,这里假设用高8位用来保存颜色属性,低8位用来保存ASCII属性 mov cx,
    16 show: mov dl,ds:[si] mov es:[di],dx add di,2 inc si loop show pop di pop si pop cx pop bx add di,160 inc bx loop masm mov ax,4c00h int 21h code ends

    完整代码:

    assume cs:code,ds:data,ss:stack
    
    data segment
        db 'welcome to masm!'
        db 00000010B
        db 00100100B
        db 01110001B
    data ends 
    
    stack segment stack
        db 128 dup (0)
    stack ends 
    code segment
    
        start:mov ax,stack
            mov ss,ax
            mov sp,128
    
            mov ax,data 
            mov ds,ax
    
            mov ax,0b800H
            mov es,ax
    
            mov si,0
            mov di,160*10+30
            mov bx,16
            mov dx,0
            mov cx,3
    masm:    push bx
            push cx 
            push si
            push di
    
            mov dh,ds:[bx]
            mov cx,16
    show:    mov dl,ds:[si]
            mov es:[di],dx
            add di,2
            inc si 
             loop show 
        
            pop di
            pop si 
            pop cx
            pop bx 
            add di,160
            inc bx
            loop masm
            mov ax,4c00h
            int 21h    
    
    
    code ends 
    end  start 
  • 相关阅读:
    ABP文档翻译--值对象
    (转)SqlServer 数据库同步的两种方式 (发布、订阅),主从数据库之间的同步
    Sql Service 的job作业新建过程
    Python --- pyinstaller --- 打包成exe并更换图标
    基于树形检测器的多标志识别
    记录 TypeError: render() got an unexpected keyword argument 'renderer' 错误
    Dockerfile 关键字
    Go new 和 make的区别
    Go的数据类型
    Mac Go 环境变量配置
  • 原文地址:https://www.cnblogs.com/SunShine-gzw/p/13884121.html
Copyright © 2011-2022 走看看