鱼C论坛

 找回密码
 立即注册
查看: 3727|回复: 8

[原创] 汇编 课程设计1 交作业啦!

[复制链接]
发表于 2012-11-6 19:37:53 | 显示全部楼层 |阅读模式

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

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

x
[hide]谢谢您的回复~~嘿嘿!![/hide]assume cs:code ,ds:data ,ss:stack

data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995' 
;======================================================================
d2 dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 456980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;======================================================================
d3 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800 
;======================================================================
d4 dw 20 dup (0)
data ends
;======================================================================
stack segment
dw 20 dup (0)
stack ends
;======================================================================
;======================================================================
code segment
;======================================================================

strat: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov ax,stack
mov ss,ax
mov sp,20
;-----------------初始化寄存器
mov bx,160
mov si,0
mov di,0
;-----------------DI指向显存
mov bp,offset d2
;-----------------BP指向D2
mov cx,21 
;====================================================================== 
;显示日期 
zhuxh: call riqi


;======================================================================
;显示收入

push di
xor di,di
add di,30
call shouru
pop di
;----------------------写人数间距加20
;======================================================================
;显示人数
push di
xor di,di
add di,60
call renshu
pop di
;----------------------与平均娄间距加20

;======================================================================
;显示平均
push di
xor di,di
add di,90 
call pingjun 
call dtoc
;----------------------结果转ASCII码
call show_str 
pop di
;----------------------显示
;======================================================================
add bx,160
mov di,0
add si,2
add bp,4
loop zhuxh

mov ah,01
int 21h 



;========= ====================================================
;=====================================================================
;=====================显示show_str=======================================
show_str: 
push bp
push cx
mov bp,offset d4
xssj: mov cl,ds:[bp]
mov ch,0
inc bp
jcxz xswk
mov es:[bx+di],cl
inc di
mov es:[bx+di],2
inc di
jmp xssj
xswk: pop cx
pop bp

ret
;=====================================================================
;========================转换DTOC=======================================
dtoc: push si
push di
push bp
push cx
push bx
mov bx,10
mov si,0
;-----------保存数据
d_hys: mov bp,ax
;-----------转移L位
mov ax,dx
xor dx,dx
;-----------H转AX D清零
div bx
;-----------H/10
mov di,ax
;-----------H结果=DI
mov ax,bp
;-----------L重赋给AX
div bx
;-----------REG+L/10 DX=余娄 H结果=DI
;=========== L结果AX 

mov cx,bp
jcxz d_wk 
;-----------余数为空jmp 到出栈
add dx,30h
push dx
inc si
xor dx,dx
;------------余数+30H=ASCII
mov dx,di
;------------H重赋给DX
jmp d_hys
;------------判断H为0,不为0循环
;============ 为0做L位除法
d_wk: mov cx,si 
;------------设定循环数
jcxz d_ecs
;------------CX为0 jmpECS
mov si,offset d4
;------------d4数据给SI 
d_cz: pop ds:[si]
inc si
loop d_cz 
;-------------循环出栈

d_ecs: pop bx
pop cx
d_2: pop bp
pop di 
pop si
ret
;=====================================================================
;==========================除法divdd=====================================
divdd: push si
push bp
push bx
push cx
;-------------保存数据
mov bp,ax
;-------------L转BP
mov ax,dx
mov dx,0
;-------------H给AX
div bx
;-------------H/10
mov si,ax
;-------------H结果给SI
mov ax,bp
;-------------L重赋给AX
div bx
mov dx,si
;-------------H赋值给DX 
pop cx
pop bx
pop bp
pop si 
ret 
;====================================================================
;==========================日期riqi=====================================
riqi: push si
;------------------保存数据
;push
add si,si 
mov ax,ds:[si]
mov ds:0d2h,ax
mov ax,ds:2[si]
mov ds:0d4h,ax
mov ds:0d6h,0
call show_str 
pop si
ret 
;====================================================================
;==========================收入shouru==================================
shouru: push si
push bp 
;------------------保存数据
mov si,offset d4 
;------------------d4=si
mov ax,ds:[bp]
mov dx,ds:2[bp] 
;-------------------AX&DX赋值
call dtoc
call show_str
;-------------------转换ASCII&显示

pop bp
pop si
ret 
;====================================================================
;==========================人数renshu=================================== 
renshu: push si
;------------------保存数据 
;mov dx,offset d3
mov ax,ds:0a8h[si] 
mov dx,0
call dtoc
call show_str
pop si 
;===================================================================
;==========================平均pingjun=================================
pingjun: push si
push bx
push di
push bp 
;-------------------;保存数据
mov ax,ds:[bp]
mov dx,ds:2[bp]
;-------------------DX&AX赋值 被除数
mov bx,ds:0A8H[si]
;-------------------BX赋值 除数
call divdd 


pop bp
pop di
pop bx
pop si 
ret

code ends
end strat
未命名.jpg

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-11-6 19:39:11 | 显示全部楼层
搞了几天~~哈哈!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-18 23:35:43 | 显示全部楼层
看了一下  挺厉害的吗   我是初学者  里面的代码也认识的不太全
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-16 18:04:07 | 显示全部楼层
楼主,我编译怎么通不过啊,提示99、197有无效的指令操作:L
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-17 20:28:32 | 显示全部楼层
大牛 您好 崇拜啊  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-2-18 11:26:40 | 显示全部楼层

多谢指点!没有指明数据长度,所以报错。我在EMU8086下写的,疏忽疏忽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-23 18:42:16 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-6-16 00:11:32 | 显示全部楼层
我真的很感悟……  这编码 看起来 就漂亮  唉我的 编码 自己都看着晕:funk::funk:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-5 20:07:57 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 14:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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