昆明理工大学信息工程与自动化学院学生实验报告
( 201 — 201 学年 第 一 学期 )
课程名称:汇编与微机接口实验 开课实验室: 年 月 日 年级 学号 姓名 成绩 实验项目名实验一 按照材料编程 称 教师 评语 指导教师 教师签名: 年 月 日
一、实验目的:
1. 熟悉并掌握80X86机器内存的分配和组成; 2. 熟悉DEBUG调试环境,熟悉常用命令;
3. 利用汇编编写简单的程序,通过显存显示相应的字符串。
二、实验要求:
1.阅读教材175页实验9中给出的材料,理解显存的相关知识;
2. 程序一:编写程序(要求按分段方式编程)实现在显示器上显示一段字符串,同一字符串请在屏幕上显示3行,每行显示的颜色不一样如:(字符串、格式自定) HELLO ! WELCOM
HELLO ! WELCOM
HELLO ! WELCOM 3. 程序二:编写程序计算1~100的和,结果也在屏幕上显示(可以按十六进制数显示)。
-1-
三、实验环境
汇编程序:MASM 6.15,链接程序:LINK.EXE,调试环境:DEBUG.EXE,对操作系统和计算机无特殊要求,如果是WIN7以上操作系统,需要安装DOSBOX虚拟平台。
四、实验内容(算法及运行结果的截图) 程序一代码:
assume cs:code,ds:data data segment
db ' Hello!Welcome!'
data ends ;数据段
code segment
start: ;开始执行
mov ax,data mov ds,ax mov ax,0b800h
mov es,ax ;向基础地址为0b800h的这个地址空间写入数据,写入的内容会立即出
现在显示屏上
mov bx,0 mov si,720h
mov cx,16 ;数据段中给定了16个字符,故将每一个字符读出来要循环16次
s1:
mov al,[bx]
mov ah,2 ;用2h将取出来的字数据的高位替代。恰好00000010h=2h为黑底绿字的属性字节
mov es:[si],ax
mov ah,24h ;00100100h=24h,设置成绿底红字
mov es:[si+0a0h],ax
mov ah,71h ;01110001h=17h,设置成蓝底白字
mov es:[si+0a0h+0a0h],ax inc bx
-2-
add si,2
loop s1 ;循环 mov ah,4ch ;终止程序 int 21h
code ends end start
程序运行截图:
-3-
-4-
程序二代码:
assume cs:codeseg,ds:dataseg dataseg segment
num db 4 dup(0) ;定义4个字节并赋值为0命名为num dataseg ends ;数据段
codeseg segment ;代码段 START:
mov ax,dataseg
mov ds,ax mov cx,100 xor ax,ax mov bx,10
xor dx,dx s: add ax,cx loop s lea si,num+3
step1:
cmp ax,bx
jb over xor dx,dx
div bx mov [si],dl dec si
jmp step1
over:
mov [si],al
mov cx,4 xor si,si
mov ah,02h
dis:
;为ds赋值 ;循环为100次 ;清零 ;清零
;跳转,若ax>bx则跳到over ;除法
;控制以下循环为四次 -5-