鱼C论坛

 找回密码
 立即注册
查看: 2176|回复: 1

[汇编作业] 第十章的课程设计1 个人思路

[复制链接]
发表于 2013-12-31 00:02:43 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 电器维修 于 2013-12-31 00:05 编辑

本人是个家电维修技师,白天没空学,也就每天晚上学习2~3小时,这个程序是我个人思考,个人编写的。虽然这个思路有点笨
但还是比较直观看懂的。
希望师傅们指点!!谢谢


assume cs:codesg,es:table,ss:stacksg
table segment
     db 32 dup (0)
  
     db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985'
  db '1986','1987','1988','1989','1990','1991','1992','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,4073,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
stacksg segment
dd 40 dup (0)
stacksg ends
codesg segment
start:  mov ax,table
        mov es,ax
  mov si,32
  mov di,0            ;在这里DI只做转换好的10进制数存放的变量
  
  mov ax,0b800h
  mov ds,ax
  
  mov bx,1f4h     ;第一列显示的开始地址
  call xian
  
  add bx,18              ;定位第二列显示的开始地址
  call divdw
  
  add bx,20          ;第三列的开始地址
  call div1
  
  mov bx,230h        ;第四列的开始地址
  call div1
  
  mov ax,4c00h
  int 21h
  
xian:   push bx
  
        mov cx,21
xian2:  push cx
  
        mov cx,4
xian1:  mov ah,2
        mov al,es:[si]
  mov [bx],al
  mov [bx+1],ah
  inc si
  add bx,2
  loop xian1
        
  add bx,0a0h
  sub bx,8                     ;这里的8是应为字符占用4个字节背景也占用4个字节
  pop cx
  loop xian2
         
  pop bx
  ret
divdw:   mov cx,21
zx:      push cx
         push bx
   
         mov bp,0    ;这里只用BP记下次数               
   mov di,0
   
         mov ax,es:[si]
         mov dx,es:[si+2]
divdw1:  push ax
   mov cx,0ah
   mov ax,dx
   sub dx,dx
   div cx
   mov bx,ax
   pop ax
   div cx
   add dx,30h
   push dx
   mov dx,bx
   inc bp
   mov cx,dx
   jcxz ok0
   jmp divdw1
ok0: mov cx,ax
         jcxz kaishi
         jmp divdw1
        
kaishi:  mov cx,bp
    b:   pop es:[di]
         inc di
         loop b
   
   pop bx
  
   mov dh,2
         mov di,0
         mov cx,bp
erlie:   mov dl,es:[di]
         mov [bx],dl
         mov [bx+1],dh
   inc di
   add bx,2
   loop erlie
   
   add si,4
   add bx,0a0h
   sub bx,bp                        
   sub bx,bp
   pop cx
   loop zx
   mov bx,208h
   
      ret
   
div1:   mov cx,21
e:      push cx
  push bx
        
  mov bp,0
  mov di,0
     
  mov dx,0
  mov ax,es:[si]
  mov bx,10                 ;要转化字符是十进制的
a: div bx
  add dx,30h
  push dx                   ;将得到的每个余数存入栈
  inc bp                    ;记录除的次数
  mov cx,ax
  jcxz hao                  ;  判断商是否为0了
  sub dx,dx                 ; 将dx清下零,跟人感觉有没有这一步都一样!
  jmp a
  
hao:mov cx,bp
yi: pop es:[di]
     inc di
  loop yi                     ;利用记录的次数当作循环的次数,这里我投机取巧让每次出栈的数据压到上一个出栈的数据的高位 反正都是0!
  
  pop bx
  
   mov dh,2
         mov di,0
         mov cx,bp
sansi:   mov dl,es:[di]
         mov [bx],dl
         mov [bx+1],dh
   inc di
   add bx,2
   loop sansi
   
   add si,2
   add bx,0a0h
   sub bx,bp                        ;这里减两次记数是因为占得字符和背景。
   sub bx,bp
   pop cx
   loop e
   ret
codesg ends
end start a4.zip (1.48 KB, 下载次数: 1)


上传完代码也看太乱,又加了个附件,都是一样的!


QQ图片20131230204500.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-31 00:35:18 | 显示全部楼层
好久没有回来了

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-28 08:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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