王爽汇编语言 课程设计1

    科技2022-07-11  77

    assume cs:code 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' ;以上是表示21年的21个字符串 起始位置 0 dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ;以上是表示21年公司收入的21个dword型数据 起始位置 54H dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800 ;以上是表示21年公司雇员人数的21个word型数据 起始位置 A8H db 10 dup (0) ; 转为字符串的存放位置, 起始位置 D2H data ends code segment start:mov ax,data mov ds,ax mov si,0D2H mov dh,2 mov di,0 mov bx,0 mov cx,21 s: mov dl,20 push cx mov cl,02 mov ax,[bx] mov [si],ax mov ax,[bx+2] mov [si+2],ax call show_str ;显示每一行的年份 call back_zero ;显示年份后,将字符串区的值置为0 add dl,10 ;列数加10,将显示公司收入 push dx mov ax,[bx].54h mov dx,[bx].56h call dtoc ;调用后ax中的值不变 pop dx mov cl,02 call show_str ;显示公司收入 call back_zero add dl,20 ;列数加20,显示人均收入 push dx mov dx,[bx].56h div word ptr [di].0A8h sub dx,dx call dtoc pop dx mov cl,02 call show_str ;显示人均收入 call back_zero sub dl,10 push dx mov ax,[di].0A8h sub dx,dx call dtoc pop dx call show_str ;显示公司人数 add bx,4 add di,2 inc dh pop cx loop s mov ax,4c00h int 21h ;功能:将dword型数据转变为表示十进制数的字符串,字符串以0为结尾符。 ;参数:(ax)=dword型数据的低16位,(dx)=dword型数据的高16位,ds:si 指向字符串的首地址。 ;返回:无。 dtoc: push dx push si push cx push bx push ax mov bx,0 dtoc_s: mov cx,10 call divdw add cl,30h push cx inc bx mov cx,ax add cx,dx inc cx loop dtoc_s mov cx,bx dtoc_s1:pop ax mov [si],al inc si loop dtoc_s1 pop ax pop bx pop cx pop si pop dx ret ;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。 ;参数:(dh)=行号(取值范围0~24)(dl)=列号(取值范围0~79),(cl)=要显示字符的属性,ds:si指向字符串的首地址。 ;返回:无 show_str: push dx push ax push es push bx push si push cx mov cl,dh mov ch,0 mov ax,0 jcxz show_str_a show_str_s: add ax,0a0h loop show_str_s show_str_a: mov cl,dl jcxz show_str_a1 show_str_s0:add ax,2 loop show_str_s0 show_str_a1:mov bx,ax mov ax,0b800h mov es,ax pop ax show_str_show:mov cl,[si] jcxz show_str_ok mov es:[bx+1],al mov es:[bx],cl inc si add bx,2 jmp short show_str_show show_str_ok:push ax pop cx pop si pop bx pop es pop ax pop dx ret ;功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型。 ;参数:(ax)=dword型数据的低16位,(dx)=dword型数据的高16,(cx)=除数。 ;返回:(dx)=结果的高16位,(ax)=结果的低16位,(cx)=余数。 divdw: push bx push ax mov ax,dx mov dx,0 div cx pop bx push ax mov ax,bx div cx mov cx,dx pop dx pop bx ret ;功能:将字符串区的值置为0 ;参数:无。 ;返回:无。 back_zero: push ax push cx push bp mov ax,0 mov cx,10 back_zero_s:sub cx,1 mov bp,cx mov ds:[bp].0D2h,al inc cx loop back_zero_s pop bp pop cx pop ax ret code ends end start
    Processed: 0.013, SQL: 8