课程设计一
本帖最后由 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: ;先送高位数据判断是否为0 为0跳走 不为0继续执行
mov cx,ax
jcxz e
mov cx,10 ;高位数据除以10
div cx
push ax ;高位的商入栈
mov cx,ax
jcxz e
mov ax,ds: ;低位数送入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:
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:,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 注释是完善代码前写的有些可能跟代码不一样。
写了2种一种是上面除10转换成10进制再写入显示缓存区
另一种下面是直接定义字符然后写入显示缓存区
代码贴上来老是有些对不齐。 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:
mov ah,7
mov es:,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:
mov ah,7
mov cl,ds:
mov es:,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:
mov ah,7
mov cl,ds:
mov es:,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:
mov ah,7
mov cl,ds:
mov es:,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 具体要实现什么功能?无图无真相啊!{:10_266:}{:10_266:}
页:
[1]