汇编语言-王爽-课程设计1
2013-10-17 13:15
483 查看
子程序dtod将dx、ax表示的32位数字转化为si指向的以0结尾的字符串,dtoc、divdw、show_str按照书中要求,前面的实验8用于生成table段的代码改成子程序build。
10.asm
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个字符串 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型数据 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型数据 ;临时内存空间 temp: db 11 dup(0) data ends table segment db 21 dup('year summ ne ?? ') table ends stack segment dw 0,84,168 dw 27 dup(0) stack ends code segment assume cs:code,ds:data,ss:stack main: mov ax,data mov ds,ax mov ax,stack mov ss,ax mov sp,60 call build mov bx,0e0h mov cx,21 mov dh,0 mainl1: push cx mov cx,0002h mov dl,0 mov byte ptr [bx].4,0 mov si,bx call show_str push dx mov ax,[bx].5 mov dx,[bx].7 mov si,offset temp call dtod pop dx mov dl,10 call show_str mov ax,[bx].10 call dtoc mov dl,20 call show_str mov ax,[bx].13 call dtoc mov dl,30 call show_str inc dh add bx,16 pop cx loop mainl1 mov ah,4ch int 21h build: push ax push bx push cx push si mov bx,0e0h mov cx,21 buildl1:;构造21行 ;年份 mov si,ss:[0] mov ax,[si] mov [bx].0,ax mov ax,2[si] mov [bx].2,ax ;收入 mov si,ss:[2] mov ax,[si] mov [bx].5,ax mov ax,2[si] mov [bx].7,ax ;雇员 mov si,ss:[4] mov ax,[si] mov [bx].0ah,ax ;人均收入 mov ax,[bx].5 mov dx,[bx].7 div word ptr [bx].0ah mov [bx].0dh,ax add word ptr ss:[0],4 add word ptr ss:[2],4 add word ptr ss:[4],2 add bx,16 loop buildl1 pop si pop cx pop bx pop ax ret ;arg si dh dl cl ;bx es ax cx show_str: push ax push bx push cx push dx push si push es ;算出写入地址bx mov ax,0b800h mov es,ax mov al,0a0h mul dh mov bx,ax mov dh,0 add dx,dx add bx,dx ;al存样式 mov al,cl mov ch,0 show_strl1: mov cl,[si] jcxz show_stro1 mov es:[bx],cl mov es:1[bx],al inc si add bx,2 jmp show_strl1 show_stro1: pop es pop si pop dx pop cx pop bx pop ax ret ;ax bx cx dx divdw: push bx ;保存低位 push ax mov ax,dx mov dx,0 div cx ;保存高位商 mov bx,ax pop ax div cx mov cx,dx mov dx,bx pop bx ret ;arg si ax ;use dx,bx,cx dtoc: push ax push bx push cx push dx push si mov byte ptr [si].5,0 ;最大5位数 mov bx,4 dtocl1: ;高位置0 mov dx,0 mov cx,10 div cx add dl,30h mov [si][bx],dl mov cx,ax jcxz dtoco1 dec bx jmp dtocl1 dtoco1: ;判断是否需要移动 mov cx,bx jcxz dtocend ;向前移动 mov ch,0 dtocl2: mov cl,[si][bx] mov [si].0,cl jcxz dtocend inc si jmp dtocl2 dtocend: pop si pop dx pop cx pop bx pop ax ret ;arg si ax dx ;use bx,cx dtod: push ax push bx push cx push dx push si mov byte ptr [si].10,0 ;最大10位数,从[9]开始写入 mov bx,9 dtodl1: mov cx,10 call divdw add cl,30h mov [si][bx],cl ;当dx、ax都为0时退出循环 mov cx,ax or cx,dx jcxz dtodo1 dec bx jmp dtodl1 dtodo1: ;判断是否需要移动 mov cx,bx jcxz dtodend ;向前移动 mov ch,0 dtodl2: mov cl,[si][bx] mov [si].0,cl jcxz dtodend inc si jmp dtodl2 dtodend: pop si pop dx pop cx pop bx pop ax ret code ends end main
10.asm
相关文章推荐
- 学习<<汇编语言 -王爽>>,自已完成的一道课程设计题 (5)
- 王爽汇编语言课程设计2
- 汇编语言 王爽第二版 课程设计1
- 王爽汇编语言课程设计1
- 王爽汇编语言课程设计1
- 王爽 汇编语言 课程设计1
- 王爽汇编语言课程设计1
- 王爽-汇编语言 课程设计1 汇编源代码
- 王爽汇编语言课程设计1
- 王爽汇编语言课程设计2
- 汇编语言(王爽) 课程设计1
- 王爽汇编语言课程设计1
- 王爽汇编语言课程设计一
- 王爽汇编语言课程设计2
- 王爽 -- 汇编语言课程设计2一些问题记录
- 汇编语言王爽课程设计二
- 王爽 汇编语言 实验十 课程设计1
- 汇编语言(王爽)--课程设计一
- 王爽 汇编语言 课程设计2 修正
- 课程设计1 -------------- 王爽 汇编语言