鱼C论坛

 找回密码
 立即注册
查看: 2464|回复: 0

[汇编作业] 课程设计一代码,分享下

[复制链接]
发表于 2018-5-16 15:16:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. assume cs:code
  2. data segment
  3.   db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
  4.   db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
  5.   db '1993','1994','1995'
  6.   ;以上是表示21年的21个字符串
  7.   
  8.   dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
  9.   dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
  10.   ;以上是表示21年公司总收入的21个dword型数据
  11.   
  12.   dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
  13.   dw 11542,14430,15257,17800
  14.   ;以上是表示21年公司雇员人数的21个word型数据
  15. data ends

  16. table segment
  17. db 16 dup (0)
  18. table ends

  19. stack segment
  20. db 64 dup (0)
  21. stack ends

  22. code segment
  23. start:        mov ax,data
  24.                 mov es,ax
  25.                 mov ax,table
  26.                 mov ds,ax
  27.                 mov si,0
  28.                
  29.                 mov ax,stack
  30.                 mov ss,ax
  31.                 mov sp,64
  32.                
  33.                 mov bx,0
  34.                 mov di,0
  35.                 mov dh,1
  36.                 mov cx,21
  37.         s:        push cx
  38.                 mov ax,es:[bx]
  39.                 mov [si],ax
  40.                 mov ax,es:[bx+2]
  41.                 mov [si+2],ax
  42.                 mov byte ptr [si+4],0
  43.                 mov cl,00000111B
  44.                 mov dl,1
  45.         call show_str
  46.                
  47.                 push dx
  48.                 mov ax,es:[bx+84]
  49.                 mov dx,es:[bx+86]
  50.                 call dtocdw
  51.                 pop dx
  52.                 add dl,10
  53.                 call show_str       
  54.                
  55.                 mov ax,es:[di+168]
  56.                 call dtoc
  57.                 add dl,10
  58.                 call show_str
  59.                
  60.                 push dx
  61.                 mov ax,es:[bx+84]
  62.                 mov dx,es:[bx+86]
  63.                 div word ptr es:[di+168]
  64.                 call dtoc
  65.                 pop dx
  66.                 add dl,10
  67.                 call show_str
  68.                                
  69.                 inc dh       
  70.                 add bx,4
  71.                 add di,2
  72.                 pop cx
  73.                 loop s                       
  74.                
  75.                 mov ax,4c00h
  76.                 int 21h

  77. ;名称:show_str
  78. ;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
  79. ;参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79)
  80. ;           (cl)=颜色,ds:si指向字符串的首地址
  81. ;返回:无               
  82. show_str:
  83.                 push ax
  84.                 push es
  85.                 push si
  86.                 push di
  87.                 push cx
  88.                
  89.                 mov ax,0B800h
  90.                 mov es,ax
  91.                 mov al,0A0h
  92.                 mul dh
  93.                 mov di,ax
  94.                 mov al,2
  95.                 mul dl
  96.                 add di,ax
  97.                 mov al,cl
  98.                 mov ch,0
  99.         s0:        mov cl,[si]
  100.                 jcxz ok0
  101.                 mov es:[di],cl
  102.                 inc di
  103.                 mov es:[di],al
  104.                 inc si
  105.                 inc di
  106.                 jmp short s0
  107.                                
  108.         ok0:pop cx
  109.                 pop di
  110.                 pop si
  111.                 pop es
  112.                 pop ax
  113.                 ret

  114. ;名称:dtoc
  115. ;功能:将word型数据转变为表示十进制数的字符串,字符串以0为结尾符
  116. ;参数:(ax)=word型数据
  117. ;           ds:si指向字符串的首地址               
  118. dtoc:        push bx
  119.                 push dx
  120.                 push ax
  121.                 push cx
  122.                 push si
  123.                
  124.                 mov bx,0
  125.         s1:        mov cx,0Ah
  126.             mov dx,0
  127.                 div cx
  128.                 push dx
  129.                 inc        bx
  130.                 mov cx,ax
  131.                 jcxz ok1
  132.                 jmp short s1
  133.         ok1:mov cx,bx
  134.         s2:        pop ax
  135.                 add al,30h
  136.                 mov [si],al
  137.                 inc si
  138.                 loop s2
  139.                 mov byte ptr [si],0
  140.                
  141.                 pop si
  142.                 pop cx
  143.                 pop ax
  144.                 pop dx
  145.                 pop bx
  146.                 ret

  147. ;名称:dtocdw
  148. ;功能:将dword型数转变为表示十进制数的字符串,字符串以0位结尾符。
  149. ;参数:(ax)=dword型数据的低16位
  150. ;           (dx)=dword型数据的高16位
  151. ;           ds:si指向字符串的首地址
  152. dtocdw:       
  153.                 push ax
  154.                 push bx
  155.                 push cx
  156.                 push dx
  157.                 push si
  158.                
  159.                 mov bx,0
  160.         s3:        mov cx,0Ah
  161.                 call divdw
  162.                 push cx
  163.                 inc bx
  164.                 mov cx,dx
  165.                 jcxz s4
  166.                 jmp short s3
  167.                
  168.         s4: mov cx,ax
  169.                 jcxz ok2
  170.                 jmp short s3
  171.                
  172.         ok2:mov cx,bx
  173.         s5:        pop ax
  174.                 add al,30h
  175.                 mov [si],al
  176.                 inc si
  177.                 loop s5               
  178.                 mov byte ptr [si],0
  179.                
  180.                 pop si
  181.                 pop dx
  182.                 pop cx
  183.                 pop bx
  184.                 pop ax
  185.                 ret
  186. ;名称:divdw
  187. ;参数:(ax)=dword型数据的低16位
  188. ;           (dx)=dword型数据的高16位
  189. ;      (cx)=除数
  190. ;返回: (dx)=结果的高16位,(ax)=结果的低16位
  191. ;           (cx)=余数               
  192. divdw:        push bx
  193.                
  194.                 mov bx,ax
  195.                 mov ax,dx
  196.                 mov dx,0
  197.                 div cx
  198.                 push ax
  199.                 mov ax,bx
  200.                 div cx
  201.                 mov cx,dx
  202.                 pop dx
  203.                
  204.                 pop bx
  205.                 ret       
  206.                

  207. code ends
  208. end start               
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 07:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表