汇编语言实验
本文最后更新于:2023年9月20日 下午
loop双层循环
1 |
|
- 两层循环解决
实验4 [bx]和loop的使用
1.编程,向内存0:200-0:23F依次传送数据0-63(3FH)。
1 |
|
实验5 编写、调试具有多个段的程序
1.程 序如下,编写code段中的代码,将a段和b段中的数据依次相加,将结果保存到c段中。
1 |
|
2.程序 如下,编写code段代码,用push指令将a段中的前8个字型数据,逆序存储到b段中。
1 |
|
实验6 实践课程中的程序
将下面的程序补充完整,实现将 datasg 段中的每个单词的前 4 个字母改为大写字母。【要求:仅能修改 codesg segment 的代码】
1 |
|
实验7 寻址方式在结构化数据访问中的应用
1 |
|
实验9 根据材料编程
1.将你的姓名和学号在屏幕上中间显示出来。字符属性要求如下: 学号尾号为 1,3,5,7,9 的为黑底绿色;学号尾号为 0,2,4,6,8 的为黑底红色。
BL(闪烁) R G B(背景) I (高亮) R G B (前景)
80x25彩色字符模式显示缓冲区(以下简称为显示缓冲区)的结构:
- 内存地址空间中,B8000H~BFFFFH 共32KB的空间,为80X25 彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在显示器上。
- 在 80x25 彩色字符模式下,显示器可以显示 25 行,每行80个字符,每个字符可以有256 种属性(背景色、前景色、闪、高亮等合信息)。
- 这样,一个字符在显示缓冲区中就要占两个字节,分别存放字符的 ASCII码和属性。
- 80x25模式下,一屏的内容在显示缓冲区中共占4000个字节。
- 显示缓冲区分为 8页,每页 4KB(4000B),显示器可以显示任意一页的内容。一般情况下,显示第0页的内容。也就是说通常情况下,B8000H~B8F9FH 中的4000个字节的内容将出现在显示器上。
在一页显示缓冲区中:
- 偏移000~09F对应显示器上的第1行(80个字符占160个字节);
- 偏移0A0~13F对应显示器上的第2行;
- 偏移140~1DF对应显示器上的第3行;
- 依此类推,可知,偏移FOO~F9F 对应显示器上的第25 行。
在一行中,一个字符占两个字节的存储空间(一个字),低位字节存储字符的 ASCII码,高位字节存储字符的属性。一行共有 80个字符,占160个字节。即在一行中:
- 00~01单元对应显示器上的第 1列:
- 02~03单元对应显示器上的第2列
- 04~05单元对应显示器上的第3 列
- 依此类推,可知,9E~9F 单元对应显示器上的第 80 列
1 |
|
实验10 编写子程序
1.显示字符串
1 |
|
2.数值显示(加上判断溢出后的代码没看懂)
1 |
|
实验12 编写0号中断的处理程序
1.编写 0 号中断的处理程序并将其安装在 0:200 处,使得在除法溢出发生时,屏幕中间自动显示字符串“divide overflow!”,然后返回到 DOS。安装完中断处理程序后,编写针对该中断处理程序的测试程序,并运行测试程序,检查是否正确触发中断处理程序。
1 |
|
实验13 编写0号中断的处理程序
编写并安装 int 7ch 中断例程,功能为以“年/月/日 时:分:秒”的格式,在屏幕中间显示当前的日期、时间。中断例程安装在 0:200 处。
1 |
|
实验15 安装新的 int9 中断例程
安装一个新的 int 9 中断例程,功能:在 DOS 下,按下“A”键后,如果松开,则显示满屏幕的“A”(字符显示属性为蓝底高亮红色),其他键照常处理。
1 |
|
实验16 编写包含多个功能子程序的中断例程
- 安装一个新的 int 7ch 中断例程,为显示输出提供如下功能子程序。
- (1)清屏;
- (2)设置前景色;
- (3)设置背景色;
- (4)向上滚动一行。
- 入口参数说明如下:
- (1) 用 ah 寄存器传递功能号:0 表示清屏;1 表示设置前景色;2 表示设置背景色;3 表示向上滚动一行;
- (2) 对于 1、2 号功能,用 al 传递颜色值,(al)∈ {0,1,2,3,4,5,6,7}。
1 |
|