Java教程

汇编第三版 王爽 课程设计1

本文主要是介绍汇编第三版 王爽 课程设计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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!