第九章实验

实验1

屏幕上输出内存单元中的十进制两位数

; 在屏幕上输出内存单元中的十进制两位数
assume cs:code, ds:data
data segment
     db 12
     db 0,0   ; 前一个字节用于保存商,后一个字节用于保存余数
data ends
code segment
start:
      mov ax,data
      mov ds,ax     ; 补全指令,使得ds <-- data段地址

      mov ah,0
      mov al,ds:[0]   ; ax <-- data段字节单元的被除数12
      mov bl,10
      div bl
      mov  ds:[1],al    ; 补全代码,让商保存到data段注释中指定的单元
      mov  ds:[2],ah    ; 补全代码,让余数保存到data段注释中指定的单元

      mov ah,2
      mov dl,ds:[1]    ; 补全代码,使得dl <-- data段中保存的商的字节单元数值
      add dl,30h       ; 补全代码,使得dl中的数值转换为数字字符
      int 21h

      mov ah,2
      mov dl,ds:[2]     ; 补全代码,使得dl <-- data段中保存余数的字节单元数值
      add dl,30h       ; 补全代码,使得dl中的数值转换为数字字符
      int 21h

      mov ax,4c00h
      int 21h
code ends
end start

实验结果



实验2

在屏幕上输出data 段定义的5 个十进制两位数,数据和数据之间以空格间隔。

assume cs:code, ds:data
data segment
     db 12,35,96,55,67
     db 0,0
data ends
code segment
start:
     mov ax,data
     mov ds,ax
     mov bx,0
     mov cx,5

   s:mov ah,0
     mov al,ds:[bx]
     mov dl,10
     div dl
     mov  ds:[5],al
     mov  ds:[6],ah

     mov ah,2
     mov dl,ds:[5]
     add dl,30h
     int 21h

     mov ah,2
     mov dl,ds:[6]
     add dl,30h
     int 21h

     mov ah,2
     mov dl,32
     int 21h

     inc bx
     loop s

     mov ax,4c00h
     int 21h
code ends
end start
      ; 补全程序,参考t1.asm,综合应用以下知识完成:
      ; (1) loop指令、内存单元地址的灵活表示
      ; (2) div指令, 数字→数字字符的转换
      ; (3) int 21h的2号子功能,完成单个字符输出的方法,即:
      ;     mov ah,2
      ;     mov dl,待输出字符或其ASCⅡ码
      ;     int 21h
      ; (4) 数据和数据之间以空格间隔的实现: 使用(3)输出空格字符

实验结果



实验3

在屏幕中间分别显示绿色,绿底红色,白底蓝色的字符串’welcome to masm!‘。

; p187 实验9

assume ds:data, cs:code
data segment
       db ‘welcome to masm!‘
       db 2H,24H,71H         ;字符串属性值
data ends
stacksg segment
        dw 8 dup(0)
stacksg ends

code segment
start:  mov ax,data
        mov ds,ax            ;字符串及属性值所在段的段地址送入ds
        mov ax,stacksg
        mov ss,ax

        mov ax,0b800H
        mov es,ax            ;80×25彩色字符模式显示缓冲区段地址送入es

        mov cx,3
        mov di,0
        mov si,06E0h
     s0:push cx
        mov al,ds:[16+di]
        mov bx,0
        mov cx,16
     s1:mov dl,ds:[bx]
        mov byte ptr es:[si],dl
        mov byte ptr es:[si+1],al
        inc bx
        add si,2
        loop s1
        add si,128
        inc di
        pop cx
        loop s0

        ; 添加代码,通过循环逐个将每个字符及其属性送入相应的显示缓冲区对应行
        ; 即:将data段的字符及属性通过循环逐个mov到显示缓冲区(es)段相应的单元内

        ; 可以先尝试分别写三段代码,每次完成一行的显示
        ; 程序运行起来后,再尝试通过灵活的寻址方式和循环,对三段代码修改和简化
        ; 学习第10章子程序后,还可以进一步完善优化,设计子程序,将行号、列号、颜色属性设置成入口参数

        mov ax,4c00h
        int 21h
code ends
end start

 实验结果

 

总结与体会

1.要熟悉int 21h的使用原理

mov ah,2
          mov dl,ds:[6]
          add dl,30h
          int 21h

       通过dl来输出

我在博客截取了一部分,具体在https://www.cnblogs.com/ynwlgh/archive/2011/12/12/2285017.html

2.在内存地址空间中,B8000H~BFFFFH共32KB空间为彩色字符模式显示缓冲区,向这个地址空间写入数据,会显示在显示器上

一个字符占两个字节的存储空间,低位字节存储字符ASCII码,高位字节存储字符属性(偶地址放字符,奇地址放字符颜色属性)

在80×25 的彩色字符模式,共计25 行:0~24 行
每一行160 个字节(十六进制A0H)
中间的位置在line11, 12, 13

行数 偏移地址(十六进制) 行数 偏移地址(十六进制)
0 0000 ~ 009F                      13 0820 ~ 08BF
1 00A0 ~ 013F                      14 08C0 ~ 095F
2 0140 ~ 01DF                     15 0960 ~ 09FF
3 01E0 ~ 027F                      16 0A00 ~ 0A9F
4 0280 ~ 031F                      17 0AA0 ~ 0B3F
5 0320 ~ 03BF                      18 0B40 ~ 0BDF
6 03C0 ~ 045F                      19 0BE0 ~ 0C7F
7 0460 ~ 04FF                       20 0C80 ~ 0D1F
8 0500 ~ 059F                       21 0D20 ~ 0DBF
9 05A0 ~ 063F                       22 0DC0 ~ 0E5F
10 0640 ~ 06DF                     23 0E60 ~ 0EFF
11 06E0 ~ 077F                     24 0F00 ~ 0F9F
12 0780 ~ 081F

原文地址:https://www.cnblogs.com/zq-dmhy/p/10060488.html

时间: 2024-08-02 05:39:55

第九章实验的相关文章

第九章实验报告(构造数据类型实验)

c语言程序报告 姓名:吴波?????实验地点:第一教学楼514教室?????实验时间:6月26日 实验项目: 9.3.1.试利用结构体类型描述年.月.日,输入一个日期,统计该日期是本年度第多少天. 9.3.2. 在选举中进行投票,包含候选人姓名.得票数,假设有多为候选人,用结构体数组统计各候选人的得票数. 9.3.3. 若将教师和学生的数据放在同一表格中.教师的数据包括编号.姓名.职业和职务,学生的数据包括编号.姓名.职业和班级.试编写程序填写表格. 9.3.4.n个人围成一圈,从第s个人开始按

第九章实验报告

C程序设计实验报告 实验项目:构造数据类型实验 姓名:罗子健 实验地点:物联网实验室 实验时间:2019年6月26日 一.实验目的与要求 (1)掌握结构体类型说明和结构体类型变量.数组.指针的定义方法及使用. (2)学会引用结构体中的成员. (3)掌握利用指向结构体的指针成员构成链表的基本算法. (4)了解联合体类型和枚举类型的说明.其变量的定义及赋初值的方法. (5)了解联合类型变量中各成员的存储结构,学会引用各成员中的数据. (6)学习正确引用枚举类型常量,了解如何对枚举类型变量进行操作.

第九章构造数据类型实验

---恢复内容开始--- 第九章构造数据类型实验 一.实验项目: 1.结构体变量的应用. 2.结构体数组的应用. 3.共用体的应用. 4.机构体指针的应用. 姓名:李儿龙    实验地点:教学楼514教室     实验时间:6月28日 二.实验目的 1.巩固学生对结构体这种数据机构概念的理解,增强程序设计能力. 2.巩固学生对结构体这种数据机构概念的理解,增强程序设计能力. 3.巩固学生对结构体.共用体这种数据机构概念的理解,增强程序设计能力. 4.巩固学生对结构体这种数据机构概念的理解,增强程

读《软件调试》第九章

Tomcat源码学习前的准备工作 注:由于网上的帖子大部分没有配套的图片和错误的分析,所有费了半天劲整理了此篇博客,希望大家少走弯路吧 下面我们就开始我们的Tomcat源码学习之旅. 1. 下载Tomcat6.0的源代码 首先,我们得下载Tomcat6.0的源代码.Tomcat源代码的版本控制工具不是CVS,而是Subversion,如果您的机器上没有安装Subversion,请从http://subversion.tigris.org/servlets/ProjectDocumentList?

第九章 C语言在嵌入式中的应用

上章回顾 编码的规范和程序版式 版权管理和申明 头文件结构和作用 程序命名 程序注释和代码布局规范 assert断言函数的应用 与0或NULL值的比较 内存的分配和释放细节,避免内存泄露 常量特性 [email protected]:Kevin-Dfg/[email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 第九章 第九章 C语言在嵌入式中的应用 C语言在嵌入式中的应用 [email protecte

现代软件工程讨论第九章-十七章

第九章 9.5.1  PM们的故事 9.5.2  我是做PM 的料么? 在校学生如何为成为PM做准备 你是否觉得你的长处不在于写代码和debug,而是协调.沟通,让一个团队或组织有效运转起来?你是否喜欢表达,善于和各种专业背景的人沟通?你是否经常思考如何改进生活中点点滴滴的小问题?你会思考这样的问题么:新浪微博.豆瓣.qq.微信都可以社交,它们的定位.产品特性.用户群.解决的需求,有什么不同?你是否对以下领域感兴趣,甚至自己找过相关的书来看:心理学.社会学.组织行为学.统计学.商业模式? 如果你

第九章 科学、技术与工业

第九章 科学.技术与工业 回顾三大内容 18世纪法国启蒙运动与数理精神的传播 数理传统在法国的传播,一方面与启蒙运动的精神是一致的:另一方面,与笛卡尔的"宇宙观"是相冲突的. 物理科学中的两大传统 数学传统 培根传统 生命科学的实验化与分析化 生命科学的两大分支 实验生理学传统 詹娜是历史上第一个明确的治好了某种明确的疾病的人 巴士德,在微生物学有杰出的贡献 博物学传统 没有科学技术的发展,就没有工业文明 9.1(与科学无关的)第一次科学革命 工业革命 工业革命对于英国的意义,就好象哲

第九章 结构体与公用体

C程序设计实验报告 实验练习: 9.3.1.结构体变量的应用 9.3.2.结构提数组的应用 9.3.3.共用体的应用 9.3.4.结构提指针的应用 姓名:钟俊敏    实验地点:教学楼514教室     实验时间:6月26日 9.3.1.结构体变量的应用 ● 定义结构体类型struct date,它含有年.月.日3个成员:● 定义struct date类型的变量,并从键盘输入初值● 利用循环语句,计算天数● 利用分支语句,判断闰年 9.3.2.结构提数组的应用 ● 定义候选人struct per

javascript高级程序设计 第九章-- 客户端检测

javascript高级程序设计 第九章-- 客户端检测 客户端检测是javascript开发中最具争议的一个话题,由于浏览器间存在差别,通常需要根据不同浏览器的能力分别编写不同的代码.有下列常使用的客户端检测方法:能力检测:在编写代码之前先检测特定浏览器的能力.例如,脚本在调用某个函数之前,可能要先检测该函数是否存在.这种检测方法将开发人员从考虑具体的浏览器类型和版本中解放出来,让他们把注意力集中到相应的能力是否存在上.能力检测无法精确地检测特定的浏览器和版本.怪癖检测:怪癖实际上是浏览器中存