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

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

在这个程序中,要用到前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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值