王爽语言课程设计一代码由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“汇编语言王爽答案”。
aume cs:code data segment;0-83H db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991' ,'1992' db '1993','1994','1995'
;84H-0a7h dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
dd 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dd 11542,14430,15257,17800 data ends
b segment db 32 dup(0)b ends
stack segment dw 32 dup(0)stack ends
code segment start:
mov ax,data
;init ds,mov ds,ax
mov ax,stack
mov ,ax
mov sp,32
;bx--第几组 si--年份,人数,雇员
di--显示位置
mov bx,0
mov si,0
mov di,0
mov cx,21 lp:
push cx
;-------------------------
;年份
mov cx,4;内循环次数
mov si,bx
call show_str
;-------------------------
;-------------------------
;收入
mov si,bx
add si,84
;si指向下一个段
call dtoc
push ax
;
push ds
push si
push di
mov ax,b
mov ds,ax
mov si,0
add di,40
call show_str
pop di
pop si
pop ds
pop ax
;-------------------------
;-------------------------
;收入
mov si,bx
add si,84
add si,84
;pointer to employee 当employee定义为dd时,才能如此寻址,dw时,寻址不正确
call dtoc2
push ax
;pointer to data src
push dx
push si
push di
mov ax,b
mov ds,ax
mov si,0
add di,80
call show_str
pop di
pop si
pop ds
pop ax
jmp mcon
;-------------------------
help:
jmp lp
;-------------------------
;平均
mcon:
mov ax,data
mov ds,ax
mov si,bx
;初始化 num1
add si,84
mov ax,ds:[si]
add si,2
mov dx,ds:[si]
mov si,bx
;初始化 num2
add si,84
add si,84
;当employee定义为dd时,才能如此寻址,dw时,寻址不正确
mov cx,ds:[si]
call divdw
push ds
;存放结果
push si
push di
push cx
push ax
mov ax,b
mov ds,ax
mov si,0
pop ax
mov ds:[si],ax
add si,2
;inc si ?
mov ds:[si],dx
mov si,0
call dtoc
add di,120
;显示结果
call show_str
pop cx
pop di
pop si
pop ds
;-------------------------
add di,160
;inc bx
add bx,4
pop cx
loop help
mov ax,4c00H
int 21H
;主函数结束
;---------------;-dtoc2
-;-params ds,si--src num(num1 16 bit)
-;-return B Segment save num cx--num Length
-;---------------dtoc2:
push ds
push si
push ax
push bx
dc2:
mov bx,0
;save length
mov ax,ds:[si]
;初始化 num1
mov dx,0 dccon2:
mov cx,10
;初始化 num2
call divdw
add cx,30H
push cx
;save extra
inc bx
push ax
or ax,dx
mov cx,ax
pop ax
jcxz dcok2
jmp dccon2
dcok2:
mov cx,bx
mov ax,b
mov ds,ax
mov si,0 dcsav2:
pop ds:[si]
inc si
loop dcsav2
mov cx,bx
;result cx--length
pop bx
pop ax
pop si
pop ds
ret
;---------------;-dtoc
-;-params ds,si--src num(num1 32 bit)
;-params cx--length of str ds,si--src di--destination pos
-;---------------show_str: push es
push ax
push si
push di
push bx
push cx
mov ax,0b800H;显存地址
mov es,ax
mov bl,7
;颜色
tr:
mov al,ds:[si]
mov es:[di],al
inc di
mov es:[di],bl
inc di
inc si
loop tr
pop cx
pop bx
pop di
pop si
pop ax
pop es
ret
;---------------;-除法函数
;-余数--cx
-;---------------divdw: push bx
ddw:
push ax
mov ax,dx
mov dx,0
div cx;商在ax中、余数在dx中
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx
pop bx
ret
code ends end start