鱼C论坛

 找回密码
 立即注册
查看: 2502|回复: 4

[汇编作业] 终于做出来了, 课程设计1

[复制链接]
发表于 2015-11-23 18:37:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 復襍 于 2016-10-18 13:08 编辑

QQ拼音截图未命名0.jpg
.
;把数值显示在屏幕上
assume cs:code,ds:data
data segment
db 10 dup (0)
data ends

info segment
;每个21个数据

;年份 84字节
db '1975','1976','1977','1978','1979','1980','1981','1982'
db '1983','1984','1985','1986','1987','1988','1989','1990'
db '1991','1992','1993','1994','1995'


;收入 84字节
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

;雇员人数 42字节
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11452,14430,15257,17800

info ends

table segment
db 21 dup('year summ ne ?? ')
db 'year summ ne ?? '
table ends

code segment
start:
;把数据存入表格
mov ax,info
mov ds,ax ;设置ds段 指向info

mov ax,table
mov es,ax ;设置es段 指向table

mov bx,0 ;bx代表行
mov si,0 ;si代表 年份 收入
mov di,0 ;di代表 雇员 人均收入
mov cx,21 ;初始化
s:
;年份处理
mov ax,[si] ;把data的年份放到ax中
mov es:[bx],ax ;把ax中的年份放到内存
mov ax,[si+2] ;把data的年份放到ax中
mov es:[bx+2],ax ;把ax中的年份放到内存

;收入处理
mov ax,[si+84] ;把收入保存在ax
mov es:[bx+5],ax
mov dx,[si+84+2] ;把收入保存在dx
mov es:[bx+7],dx

;处理人均收入
div word ptr [di+168] ;dx*10000H+ax/雇员数 商ax 余数dx
mov es:[bx+13],ax


;雇员处理
mov ax,[di+168] ;把雇员保存在ax
mov es:[bx+10],ax


;置0
mov byte ptr es:[bx+4],0
mov byte ptr es:[bx+9],0
mov byte ptr es:[bx+15],0

add si,4
add di,2
add bx,16
loop s

;------------------------------
;把数据显示出来
mov ax,table
mov ds,ax
mov si,0 ;ds:si指向table首地址

;显示年份
mov cx,21
mov bl,1 ;列
show:
push cx

mov dh,bl ;行号
mov dl,30 ;列号
mov ch,0
mov cl,2 ;颜色
call show_str

;显示收入
add si,5
mov ax,[si] ;收入高16位
add si,2 ;收入低16位
mov dx,[si]
push si ;si入栈
mov si,336
call dtoc ;将word型数据转变为表示十进制的字符串,字符串以0为结尾符。
mov dh,bl ;行号
mov dl,35 ;列号
mov ch,0
mov cl,2 ;颜色
call show_str
pop si ;si在出栈

;显示雇员
add si,3 ;雇员数
mov ax,[si]
mov dx,0
push si ;si入栈
mov si,336
call dtoc ;将word型数据转变为表示十进制的字符串,字符串以0为结尾符。
mov dh,bl ;行号
mov dl,43 ;列号
mov ch,0
mov cl,2 ;颜色
call show_str
pop si ;si在出栈

;显示人均收入
add si,3 ;人均收入
mov ax,[si]
mov dx,0
push si ;si入栈
mov si,336
call dtoc ;将word型数据转变为表示十进制的字符串,字符串以0为结尾符。
mov dh,bl ;行号
mov dl,49 ;列号
mov ch,0
mov cl,2 ;颜色
call show_str
pop si ;si在出栈

pop cx
inc bl
add si,3
loop show

mov ax,4c00h
int 21h

;名称:dtoc
;功能:将word型数据转变为表示十进制的字符串,字符串以0为结尾符。
;参数: (ax)=数据低16位;
; (dx)=数据高16位;
;ds:si指向字符串首地址。
;返回:无。
dtoc:
push ax
push bx
push cx
push dx

mov bx,0 
continue1:
mov cx,10 ;设置除数
call divdw
add cl,30h ;变为ascii码
mov ch,0 ;把高8为置为0,以便存入栈中和循环
push cx ;保存
inc bx ;增加字符数
mov cx,ax
inc cx ;如果商为0 加一以便退出
loop continue1

;写入内存
mov cx,bx ;把字符数保存到cx以便循环使用
mov bx,0 ;把bx置为0 以便定位字符
continue2:
pop ax
mov [si+bx],al
inc bx
loop continue2
mov al,0
mov [si+bx],al ;把最后一个字符置0

pop dx
pop cx
pop bx
pop ax
ret


;名称:divdw
;功能:除法不会溢出
;参数: 
; ax 被除数16位
; dx 被除数16位
; cx 除数
;返回: 结果
; ax商低16位
; dx商高16位 
; cx余数16位
divdw:
push si
push di

mov di,ax ;di暂时存放ax

mov ax,dx
mov dx,0
div cx
mov si,ax ;si存放商
mov ax,di ;di的值给回ax
div cx
mov cx,dx
mov dx,si
pop di
pop si
ret

;名称:show_str
;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。
;参数:(dh)=行号(取值范围0~24);
; (dl)=列号(取值范围0~79);
; (cl)=颜色;
; ds:si指向字符串的首地址。
;返回:无。
show_str:
push ax
push cx
push dx
push si
push di
push es

mov ax,0b800h
mov es,ax

dec dh
mov al,0A0h
mul dh ;al*dh显存的行号
mov di,ax

mov al,2
mul dl
sub ax,2
add di,ax ;di显存的行号+行号
mov ah,cl
write:
mov cl,[si]
jcxz ok
mov es:[di],cl ;字符
mov es:[di+1],ah ;颜色

add di,2
add si,1
jmp write

ok:
pop es
pop di
pop si
pop dx
pop cx
pop ax
ret




code ends
end start


代码: class1.zip (2.01 KB, 下载次数: 8)
有什么不对请指教.

评分

参与人数 2荣誉 +10 鱼币 +10 贡献 +8 收起 理由
零度非安全 + 5 + 5 + 3 支持楼主!
康小泡 + 5 + 5 + 5 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-23 20:08:16 | 显示全部楼层
做的不错啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-24 11:58:52 | 显示全部楼层
结果显示在屏幕上还不会,先关注一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-24 12:26:05 | 显示全部楼层
楼主继续加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-24 12:29:42 | 显示全部楼层
支持支持楼主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-11 17:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表