传说。 发表于 2014-5-18 21:16:51

马上就要疯了!!!

assume cs:code,ds:data,es:table

table 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

    dd 345980,590827,803530,1183000,1843000,2795000,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

    dw 5,3,42,104,85,210,123,111,105,125,140,136,153,211,199,209,224,239

    dw 260,304,333

table ends

data segment

    db 32 dup (0)

data ends

code segment

start:   mov ax,data

   mov ds,ax

   mov ax,table

   mov es,ax

   mov bx,0

   mov si,0

   mov di,0

   mov cx,21

   mov dh,2

   mov dl,30

g:   push cx

   push dx

   mov ax,es:

   mov ,ax

   mov ax,es:.2

   mov .2,ax ;年份入ds:si

   add si,6

   mov ax,es:.84

   mov dx,es:.86

   call dtoc2    ;收入转成十进制字符入ds:si

   add si,10

   mov ax,es:.168

   mov dx,0

   call dtoc2    ;人员数转成十进制字符入ds:si

   add si,6

   mov ax,es:.210

   mov dx,0

   call dtoc2    ;人均收入转成十进制字符入ds:si

   mov si,0      ;设置ds:si指向需显示字符首地址

b:   mov cx,29

c:   push cx

   mov cl,

   jcxz f      ;(ds:si)=0转到f执行

d:   inc si

   pop cx

   loop c

   inc si

   mov al,0

   mov ,al   ;设置结尾符0

   mov si,0      ;设置ds:si指向需显示字符首地址

   pop dx

   mov cl,2

   call show_str

   add bx,4      ;dword数据指向下一数据单元

   add di,2      ;word数据指向下一数据单元

   add dh,1      ;指向显存下一行

   pop cx

   loop g

   mov ax,4c00h

   int 21h

f:   mov al,20h

   mov ,al   ;(ds:si)=0的数据改成空格

   jmp d



;名称:dtoc2

;功能:将dword型数据转变为表示十进制的字符串,字符串以0为结尾符。

;参数:(ax)=dword型数据的低16位;

;      (dx)=dword型数据的高16位;

;      ds:si指向字符串首地址。

;返回:无。

dtoc2:

   push ax

   push bx

   push cx

   push dx

   push si

   push di

   mov di,0

d20: mov cx,10   ;除数为10

   call divdw

   add cx,30h    ;余数+30h,转为字符

   push cx       ;字符入栈

   inc di      ;记录字符个数

   mov cx,ax

   jcxz d21      ;低位商=0时,转到d21检测高位商

   jmp d20

d21: mov cx,dx

   jcxz d22      ;高低位商全=0时,转到d22执行

   jmp d20

d22: mov cx,di

d23: pop ax      ;字符出栈

   mov ,al

   inc si      ;ds:si指向下一单元

   loop d23

   mov al,0

   mov ,al   ;设置结尾符0

   pop di

   pop si

   pop dx

   pop cx

   pop bx

   pop ax

   ret



;名称:divdw

;功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型。

;参数:(ax)=dword型数据的低16位;

;      (dx)=dword型数据的高16位;

;      (cx)=除数。

;返回:(dx)=结果的高16位;

;      (ax)=结果的低16位;

;      (cx)=余数。

divdw:

   push si

   push bx

   push ax

   mov ax,dx

   mov dx,0

   div cx      ;被除数的高位/cx

   mov si,ax

   pop ax

   div cx      ;(被除数高位的商+低位)/cx

   mov cx,dx   ;余数入cx

   mov dx,si   ;高位的商入dx

   pop bx

   pop si

   ret



;名称:show_str

;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。

;参数:(dh)=行号(取值范围0~24);

;      (dl)=列号(取值范围0~79);

;      (cl)=颜色;

;      ds:si指向字符串的首地址。

;返回:无。

show_str:

   push ax

   push bx

   push es

   push si

   mov ax,0b800h

   mov es,ax

   mov ax,160

   mul dh

   mov bx,ax   ;bx=160*dh

   mov ax,2

   mul dl      ;ax=dl*2

   add bx,ax   ;mov bx,(160*dh+dl*2)设置es:bx指向显存首地址

   mov al,cl   ;把颜色cl赋值al

   mov cl,0

show0:

   mov ch,

   jcxz show1    ;(ds:si)=0时,转到show1执行   

   mov es:,ch

   mov es:.1,al

   inc si      ;ds:si指向下一个字符地址

   add bx,2      ;es:bx指向下一个显存地址

   jmp show0

show1:

   pop si

   pop es

   pop bx

   pop ax

   ret



code ends

end start


请问课程设计1 该怎么面对。。

xiaosawanjava 发表于 2014-5-18 21:27:36

呵呵,这不是写出来了吗?

传说。 发表于 2014-5-20 19:17:07

xiaosawanjava 发表于 2014-5-18 21:27 static/image/common/back.gif
呵呵,这不是写出来了吗?

这是答案。。我看着都头疼

www5956 发表于 2014-5-21 11:36:12

传说。 发表于 2014-5-20 19:17 static/image/common/back.gif
这是答案。。我看着都头疼

疯狗你还有脸!

传说。 发表于 2014-5-21 17:45:49

www5956 发表于 2014-5-21 11:36 static/image/common/back.gif
疯狗你还有脸!

这狗已经出离愤怒了!{:1_1:}

15岁的小朋友 发表于 2014-5-21 18:23:20

好像不怎么和谐!

www5956 发表于 2014-5-23 11:54:37

传说。 发表于 2014-5-21 17:45 static/image/common/back.gif
这狗已经出离愤怒了!

:titter::titter::titter::titter::titter::titter::titter::titter::titter::titter::titter::titter::titter::titter::titter:真实!!!!!!!!!!!

o不再随便o 发表于 2014-5-23 16:51:28

慢慢写,前面基础好,花多点时间就可以写出来了

wuyoun17 发表于 2014-5-23 20:03:35

看看,新手路过。。。。。
页: [1]
查看完整版本: 马上就要疯了!!!