标签:课程设计 第三版 mov cx es ax bx ds 王爽
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
标签:课程设计,第三版,mov,cx,es,ax,bx,ds,王爽 来源: https://www.cnblogs.com/wujie-code/p/16089290.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。