本文主要是介绍汇编第三版 王爽 课程设计1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980,590827
dd 803530,1183000,1843000,2759000,3753000,4649000,5937000
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
data ends
table segment
db 21 dup('year summ ne ?? ')
table ends
show segment
db 20 dup(0)
show ends
code segment
start:
;初始化数据
call copy
;思路:一行可以显示80个字符 每列中间空10个字符 每列使用10个字符,靠左 左边空10个字符
mov ax,table
mov ds,ax
mov ax,show
mov es,ax
mov bx,0
mov dh,3 ;打印行
mov cx,21
start_s:
push cx
;显示年份
mov cx,2
start_s1:
mov ax,ds:[bx]
mov es:[0],ax
mov ax,ds:[bx+2]
mov es:[2],ax
loop start_s1
mov es:[4],0
mov dl,10 ;列数
mov cl,2 ;字符属性
call show_str
;公司总收入
push dx
mov ax,ds:[bx+5]
mov dx,ds:[bx+7]
call dtoc
pop dx
mov dl,30 ;列数
mov cl,2 ;字符属性
call show_str
;员工人数
push dx
mov ax,ds:[bx+10]
mov dx,0
call dtoc
pop dx
mov dl,50 ;列数
mov cl,2 ;字符属性
call show_str
;人均收入
push dx
mov ax,ds:[bx+13]
mov dx,0
call dtoc
pop dx
mov dl,70 ;列数
mov cl,2 ;字符属性
call show_str
inc dh
add bx,16
pop cx
loop start_s
; mov ax,12345 ;数据低位
; mov dx,1 ;数据高位
; call dtoc
; mov dh,8 ;行数
; mov dl,1 ;列数
; mov cl,2 ;字符属性
; call show_str
mov ax,4c00h
int 21h
;数字转字符
dtoc:
push cx
push si
mov si,0
s1:
mov cx,10 ;除数
;返回值:dx 结果高16位
; ax 结果低16位
; cx 余数
call divdw
add cx,30H
push cx ;暂存余数
inc si
;判断结果是否为 0
mov cx,dx ;商为0停止
jcxz ok1
jmp short s1
ok1:mov cx,ax
jcxz ok2
jmp short s1
ok2:
mov cx,si ;有多少个元素
mov si,0
s2: pop ax
mov es:[si],ax
add si,1
loop s2
mov es:[si],0
pop si
pop cx
ret
;屏幕打印
show_str:
push ds
push es
push ax
push bx
push cx
push si
push di
mov ax,show ;字符打印地址
mov ds,ax
mov si,0
mov ax,0b800h
mov es,ax
;找到行位置
mov al,160
mov ah,dh
mul ah
mov bx,ax
mov al,2
mov ah,dl
mul ah
mov di,ax
sub di,2
mov al,cl
s:
mov cl,ds:[si]
mov ch,0
jcxz ok
mov ah,ds:[si]
mov es:[bx+di],ah
mov es:[bx+di+1],al
add di,2
inc si
jmp short s
ok:
pop di
pop si
pop cx
pop bx
pop ax
pop es
pop ds
ret
;通用除法
divdw:
push bx
push ax
mov ax,dx
mov dx,0
div cx
mov bx,ax ;保存 int(H/N) 被除数高16位 / 除数
pop ax
div cx
mov cx,dx
mov dx,bx ;结果高位
pop bx
ret
;数据初始化
copy:
;ds指向数据段
mov ax,data
mov ds,ax
;es指向table段
mov ax,table
mov es,ax
mov cx,21
mov di,0
mov si,0
mov bx,0
copy_s: ;年份1
mov ax,ds:[di]
mov es:[bx],ax
;收入1
mov ax,ds:[di+84]
mov es:[bx+5],ax
;雇员数
mov ax,ds:[si+168]
mov es:[bx+10],ax
add si,2
add di,2
;年份2
mov ax,ds:[di]
mov es:[bx+2],ax
;收入2
mov ax,ds:[di+84]
mov es:[bx+7],ax
;计算人均收入
mov ax,es:[bx+5]
mov dx,es:[bx+7]
mov bp,es:[bx+10]
div bp
mov es:[bx+13],ax
add di,2
add bx,16
loop copy_s
ret
code ends
end start
这篇关于汇编第三版 王爽 课程设计1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!