|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- assume cs:codesg, ds:datasg, ss:stacksg, es:tablesg ;告诉编译器是这样 但是cpu不知道
- stacksg segment
- dw 0,0,0,0,0,0,0,0
- stacksg ends
- datasg segment
- db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985','1986','1987','1988','1989','1990','1991','1992','1993','1994','1995' ;以上是表示21年的21个字符串
- ;上面的数据地址范围是0到53H
- dd 16,22,382,1356,2390,16000,24486,50065,97479,140417,197514,345980,590827,803550,1843000,2759000,3753000,4649000,5937000
- ;上面的数据地址范围是54H到A7H
- dw 3,7,9,13,28,130,220,476,778,1001,1442,2258,2793,4037,5635,8226,11542,14430,15257,17800
- ;上面的数据地址范围是A8H到D1H
- datasg ends
- tablesg segment
- db 21 dup('year summ ne ?? ') ;这里只是占位 year是四个字节 summ是4个字节 ne两个字节 ??两个字节
- tablesg ends
- codesg segment
- start: mov ax,datasg
- mov ds,ax ;绑定数据段地址
- mov ax,tablesg
- mov es,ax ;绑定表格段地址
- mov ax,stacksg
- mov ss,ax ;绑定栈的段地址
-
-
- mov sp,16 ;设置栈顶指针
-
- mov cx,21 ;编译器中可以用十进制表示一个数字 dosbox中只能用16进制表示
- mov si,0 ;si每次都需要重置为0
- mov di,0 ;di不需要重置为0
- mov bx,0
- s0:
- push cx
- mov cx,4 ;内部循环4次
-
- s1:
- mov al,ds:[di]
- mov es:[si+bx],al ;一次一个字节且一次mov指令不能够从一个内存单元移动到另一个内存单元,所以需要用al寄存器过渡
- inc di
- inc si
- loop s1
- add bx,16
- mov si,0
- pop cx ;弹出cx
- loop s0
-
-
- mov ax,4c00H
- int 21H
-
- codesg ends
- end start
-
复制代码 |
|