山东大学汇编语言上机实验 - 实验五 - 图文 下载本文

d10hour proc near mov nodec,0 mov cl,acthlen sub ch,ch lea si,hrsfld-1 add si,cx call m10asbi mov ax,binval mov binhrs,ax ret

d10hour endp

;--------------------------------------------- ; Process rate: ; -------------

e10rate proc near mov cl,actrlen sub ch,ch lea si,ratefld-1 add si,cx call m10asbi mov ax,binval mov binrate,ax ret

e10rate endp

;---------------------------------------------- ; Multiply,round,&shift ; --------------------- f10mult proc near mov cx,07 lea di,ascwage mov ax,3030h cld rep stosw mov shift,10 mov adjust,0 mov cx,nodec cmpcl,06 ja f40 dec cx dec cx jle f30 mov nodec,02 mov ax,01 f20:

mul tenwd loop f20 mov shift,ax shr ax,1 mov adjust,ax f30: mov ax,binhrs mul binrate add ax,adjust adc dx,0 mov tempdx,dx mov tempax,ax ; cmpadjust,0 jz f50 ; mov ax,dx mov dx,0 div shift mov tempdx,ax mov ax,tempax div shift mov dx,tempdx mov tempax,ax jmp f50 ; f40: mov ax,0 mov dx,0 f50: ret

f10mult endp

;------------------------------------- ; Convert to ASC ; -------------

g10wage proc near lea si,ascwage+11 mov byte ptr[si], '.' add si,nodec g30: cmpbyte ptr[si], '.' jne g35 dec si g35:

cmpdx,0 jnz g40 cmpax,0010 jb g50 g40: mov ax,dx mov dx,0 div tenwd mov tempdx,ax mov ax,tempax div tenwd mov tempax,ax or dl,30h mov [si],dl dec si mov dx,tempdx jmp g30 g50: or al,30h mov [si],al ret

g10wage endp

;----------------------------------------- ; Display wage ; -------------

k10disp proc near mov col,50 call q20curs mov cx,10 lea si,ascwage k20: cmpbyte ptr[si],30h jne k30 mov byte ptr[si],20h inc si loop k20 k30: lea dx,messg3 mov ah,09 int 21h cmprow,20 jae k80 inc row jmp k90

k80: mov ax,0601h call q10scr mov col,0 call q20curs k90: ret

k10disp endp

;----------------------------------------- ; Convert ASC to binary ; ----------------------- m10asbi proc near mov mult10,01 mov binval,0 mov decind,0 sub bx,bx m20: mov al,[si] cmpal,'.' jne m40 mov decind,01 jmp m90 m40: and ax,000fh mul mult10 jc overflow add binval,ax jc overflow mov ax,mult10 mul tenwd mov mult10,ax cmpdecind,0 jnz m90 inc bx m90: dec si loop m20 cmpdecind,0 jz m100 add nodec,bx jmp m100 overflow: mov binval,0 m100: