《汇编语言》王爽——第十章,课程设计1

本文详细介绍了使用汇编语言实现数据可视化的步骤,包括将年份、收入、雇员和人均收入数据转化为字符串并展示在屏幕上。程序通过一系列小程序处理dword和word数据类型的转换,然后在屏幕上按列展示。文章强调了解决寄存器冲突和数据定位问题的重要性,并展示了完整的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这个程序中,要用到前10章几乎所有的知识。(书中原话)

课程设计的需求:

将之前实验7的数据在屏幕上展示出来

如图所示:                                      该图也是我的程序展示图

 

分析:

首先需要展示四大块内容,分别是:

1.年份(字符串数据,可以直接展示,不需要转化字符串)

2.收入(dword数据,需要先转化为字符串,再进行展示)

3.雇员(word数据,需要先转化为字符串,再进行展示)

4.人均收入(word数据,需要先转化为字符串,再进行展示)

接着,该以怎样的方式展示?

这里我选择一次展示一整列的数据,因为这样数据类型是一样的,比较好把握.

那么就是说按照四块内容分别展示四次,每次展示21个数据

分析完毕。

(这个程序最头疼的还是定位地址和寄存器冲突的问题,所以我把数据分成多个数据段,并且在每个小程序开始前面存储好即将使用的寄存器就解决了这个问题)

开始之前我们需要确定需要的几个小程序

1.展示小程序showptr,前面实验10写过

2.word数据转化字符串小程序dtoc,前面实验10写过

3.除法溢出问题解决小程序divdw,前面实验10写过

4.dword数据转化为字符串小程序dtoc2,没写过,需要自己写

那么先把没写过的小程序写出来:
原理和word数据转化字符串是一样的,只不过变成了双字的数据类型

代码如下,该程序将实现转化并且将12345678展示出来:

assume cs:code,ds:data,ss:stack
data segment
db 20 dup(0)
data ends
stack segment
dw 20 dup(0)
stack ends 

code segment
start:
mov bx,data
mov ds,bx
mov bx,stack
mov ss,bx
mov sp,40

mov ax,614eh
mov dx,0bch
mov si,0

call dtoc_2 	;将dword型数据转变成十进制字符串,字符串以0结尾,存放于data段

mov dh,12
mov dl,64
mov cl,02h
mov si,0
call showptr ;显示字符串 dh是行,dl是列,cl是颜色,ds:si指向字符串首地址

mov ax,4c00h
int 21h




;dword转化10进制字符串 字符串以0结尾 
;参数 ax 低16,dx 高16, ds:si 指向字符串首地址
dtoc_2:
push ax
push bx
push cx
push dx
push di
push si


mov di,0 ;计数器置0

dtoc2_s0:
mov cx,10;除数为10
call divdw   ;做dword除法 dx存放高16位结果 ax存放低16位结果 cx存放余数


add cx,30h ;余数加30h
push cx    ;存放ascii码,入栈
inc di     ;计数器加1
;判断商是否为0,此时的商是32位的结果,需要将商相加一下
mov cx,ax 
根据提供的引用内容,汇编语言王爽第三版的复习资料汇总如下: 1. 第〇章 课程资料:包括课件、源代码、电子书和课后习题答案。 2. 第一章 基础知识:介绍了汇编语言的编程思想和硬件系统的结构,以及汇编语言的主体——汇编指令。 3. 第二章 寄存器(CPU工作原理):详细介绍了CPU的工作原理和寄存器的作用。 4. 第三章 寄存器(内存访问):介绍了如何使用寄存器进行内存访问。 5. 第四章 第一个程序:演示了如何编写第一个汇编程序。 6. 第五章 [BX]和loop指令:介绍了[BX]和loop指令的使用方法。 7. 第六章 包含多个段的程序:介绍了如何编写包含多个段的程序。 8. 第七章 更灵活定位内存地址:介绍了如何更灵活地定位内存地址。 9. 第八章 数据处理的两个基本问题:介绍了数据处理中的两个基本问题——进位和溢出。 10. 第九章 转移指令的原理:介绍了转移指令的原理和使用方法。 11. 第十章 call和ret指令:介绍了call和ret指令的使用方法。 12. 第十一章 标志寄存器:介绍了标志寄存器的作用和使用方法。 13. 第十二章 内中断:介绍了内中断的概念和使用方法。 14. 第十三章 int指令:介绍了int指令的使用方法。 15. 第十四章 端口:介绍了如何使用端口进行输入输出操作。 16. 第十五章 外中断:介绍了外中断的概念和使用方法。 17. 第十六章 直接定址表:介绍了直接定址表的概念和使用方法。 18. 第十七章 使用BIOS进入键盘输入和磁盘读写:介绍了如何使用BIOS进行键盘输入和磁盘读写操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值