码迷,mamicode.com
首页 > 其他好文 > 详细

实验3 多个段的汇编源程序编写与调试

时间:2020-12-02 12:04:50      阅读:3      评论:0      收藏:0      [点我收藏+]

标签:颜色   segment   源程序   一个   tst   任务   数值   image   highlight   

实验任务一:

assume cs:code, ds:data

data segment
    db ‘Nuist‘
    db 5 dup(2)
data ends

code segment
start:
    mov ax, data
    mov ds, ax

    mov ax, 0b800H
    mov es, ax

    mov cx, 5
    mov si, 0
    mov di, 0f00h
s:  mov al, [si]
    and al, 0dfh
    mov es:[di], al
    mov al, [5+si]
    mov es:[di+1], al
    inc si
    add di, 2
    loop s

    mov ah, 4ch
    int 21h
code ends
end start
每一行代码的含义如下:    
    mov cx, 5                循环五次
    mov si, 0                初始化 si
    mov di, 0f00h            初始化 di
s:  mov al, [si]             取数据段内对应字符
    and al, 0dfh             0dfh的二进制形式为:1101 1111,and操作后实现的功能:将字符改为大写
    mov es:[di], al          写入显存
    mov al, [5+si]           为 al 赋数据段内的值
    mov es:[di+1], al        为先前写入字符的字的高位赋值,以此附以字符颜色
    inc si                   si + 1,移向数据段下一字符
    add di, 2                di + 2,移向显存下一个字
    loop s                   循环执行

汇编、连接、运行后得到的结果:

技术图片

 

使用debug工具对程序进行调试,执行到程序返回前,即line27之前,观察结果。

技术图片

 

 将db 5 dup(2) --> 改成: db 2,3,4,5,6后,重新汇编、链接、运行,观察结果。

技术图片

 

 猜测数值的作用是设置字体的颜色

实验任务二:

 

 

assume cs:code, ds:data
data segment    db ‘Nuist‘    db 5 dup(2)data ends
code segmentstart:    mov ax, data    mov ds, ax
    mov ax, 0b800H    mov es, ax
    mov cx, 5    mov si, 0    mov di, 0f00hs:  mov al, [si]    and al, 0dfh    mov es:[di], al    mov al, [5+si]    mov es:[di+1], al    inc si    add di, 2    loop s
    mov ah, 4ch    int 21hcode endsend start

实验3 多个段的汇编源程序编写与调试

标签:颜色   segment   源程序   一个   tst   任务   数值   image   highlight   

原文地址:https://www.cnblogs.com/haozhenglong/p/14047313.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!