鱼C论坛

 找回密码
 立即注册
查看: 2781|回复: 3

[汇编作业] 课程设计一

[复制链接]
发表于 2016-4-9 17:35:45 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 lyxxjfzx 于 2016-4-9 17:39 编辑
assume cs:code

data segment
dd 1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,
   1988,1989,1990,1991,1992,1993,1994,1995
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980,
   590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
dd 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,
   8226,11542,14430,15257,17800 
dd 5,3,42,104,85,210,123,111,105,125,140,136,153,211,199,209,224,239,260,304,333
data ends

code segment
start:  mov ax,0b800h
          mov es,ax
          mov ax,data          ;es指向显示缓存区 ds指向data段数据
          mov ds,ax  
          mov dx,0             ;先归零要不然后面循环会出错,死循环
          mov di,0
          mov bp,0             
                
d:          mov ax,ds:[bx+2]     ;先送高位数据判断是否为0 为0跳走 不为0继续执行
          mov cx,ax 
          jcxz e               
          mov cx,10            ;高位数据除以10
          div cx
          push ax              ;高位的商入栈  
          mov cx,ax
          jcxz e                
          mov ax,ds:[bx]       ;低位数送入AX  高位的余数自动存入DX,相当于进位 
d1:     pop di               ;高位的商放入di
          mov cx,10            ;【高位数除以10的余数进位10000H+低位数】/除数
          div cx                
          add dx,030h
          push dx              ;【高位数除以10的余数进位10000H+低位数】/除数 的余数+30H就是10进制的字符
          add si,1             ; 记录入栈了几个数                
          mov dx,di            ;高位的商放入DX
          mov di,ax            ;低位的商放入di
          mov ax,dx            ;高位的商放入ax
          mov dx,0
          div cx               ;高位的商除以10
          mov cx,ax
          jcxz b1
          push ax
          mov ax,di            ;低位的商送入ax
          jmp d1         
                
b1:     mov ax,di
          mov di,0 
          jmp b
       
e:       mov ax,ds:[bx]
b:       mov cx,10          
          div cx
          add dx,030h
          push dx              ;高位的数除完后跳到此段继续除低位的数
          mov dx,0
          add si,1
          mov cx,ax            ;入栈后记录个数 直到除为0然后跳走
          jcxz cc 
          jmp b        
                   
cc:      mov cx,si            ;记录个数送入CX用以结束循环           
cc1:    pop ax
          mov ah,7
          mov es:[di+bp],ax    ;取得的字符 高位加上字符属性白色7 送入显示缓存区
          add di,2
          loop cc1             ;直到记录字符释放完毕 结束循环
          mov si,0
          mov di,0
          add bp,160           ;bp用以定位行数
          add bx,4             ;ds指向下个数的地址
          mov cx,336           ;4个数据段每段21个数 每个数占4个内存单元 24*4*4=336
          sub cx,bx            ;336用以判断是否到最后一个数据 当bx指向最后一个单元后 相减为0跳走
          jcxz g               
          mov cx,252           ;用以判断第3个数据段是否结束
          sub cx,bx
          jcxz i                 
          mov cx,168           ;用以判断第2个数据段是否结束
          sub cx,bx
          jcxz h 
          mov cx,84            ;用以判断第1个数据段是否结束
          sub cx,bx                
          jcxz j
          jmp d                 

j:        mov bp,40           ;第一个数据段结束后 bp定位到40处开始第二段数据写入缓存
          jmp d               ;显示缓存每行160个字符 4段数据 160/4=40 平均分为4段
h:       mov bp,80           ;第三段
          jmp d
i:        mov bp,120          ;第四段
          jmp d
g:       mov ax,4c00h
          int 21h
                
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-4-9 17:43:56 | 显示全部楼层
注释是完善代码前写的有些可能跟代码不一样。
写了2种一种是上面除10转换成10进制再写入显示缓存区
另一种下面是直接定义字符然后写入显示缓存区
代码贴上来老是有些对不齐。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-9 17:47:39 | 显示全部楼层
assume cs:code

data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984',
   '1985','1986','1987','1988','1989','1990','1991','1992','1993','1994','1995'
db '16',0,'22',0,'382',0,'1356',0,'2390',0,'8000',0,'16000',0,'24486',0,'50065',0,
   '97479',0,'140417',0,'197514',0,'345980',0,'590827',0,'803530',0,'1183000',0,
   '1843000',0,'2759000',0,'3753000',0,'4649000',0,'5937000',0
db '3',0,'7',0,'9',0,'13',0,'28',0,'38',0,'130',0,'220',0,'476',0,'778',0,'1001',0,
   '1442',0,'2258',0,'2793',0,'4037',0,'5635',0,'8226',0,'11452',0,'14430',0,'15257',0,'17800',0
db '5',0,'3',0,'42',0,'104',0,'85',0,'210',0,'123',0,'111',0,'105',0,'125',0,'140',0,'136',0,
   '153',0,'211',0,'199',0,'209',0,'224',0,'239',0,'260',0,'304',0,'333',0
data ends

code segment
start:  mov ax,0b800h
         mov es,ax
         mov ax,data
         mov ds,ax
                
b:         mov cx,4
a:         mov al,ds:[bx]
         mov ah,7
         mov es:[si],ax
         add bx,1
         add si,2
         loop a
         add sp,1
         mov cx,21
         sub cx,sp
         jcxz cc
         add si,152
         jmp b
                
        
cc:         mov sp,0
         mov bp,0028H 
         mov si,0                
d:      mov al,ds:[bx]
         mov ah,7
         mov cl,ds:[bx]
         mov es:[si+bp],ax
         add bx,1
         add si,2
         jcxz f
         jmp d
f:         mov si,0
         add sp,1
         mov cx,21
         sub cx,sp
         add bp,160
         jcxz jj
         jmp d
                
                
jj:         mov sp,0
         mov bp,0050H 
         mov si,0                
h:      mov al,ds:[bx]
         mov ah,7
         mov cl,ds:[bx]
         mov es:[si+bp],ax
         add bx,1
         add si,2
         jcxz i
         jmp h
i:         mov si,0
         add sp,1
         mov cx,21
         sub cx,sp
         add bp,160
         jcxz gg
         jmp h  
                
gg:         mov sp,0
         mov bp,0078H 
         mov si,0                
k:       mov al,ds:[bx]
         mov ah,7
         mov cl,ds:[bx]
         mov es:[si+bp],ax
         add bx,1
         add si,2
         jcxz l
         jmp k
l:         mov si,0
         add sp,1
         mov cx,21
         sub cx,sp
         add bp,160
         jcxz m
         jmp k

m:      mov ax,4c00h
          int 21h
                
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-11 13:46:44 | 显示全部楼层
具体要实现什么功能?无图无真相啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 13:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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