|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 swsm 于 2014-7-11 12:16 编辑
搞了4个小时的汇编程序,王爽的汇编语言的实验7,弄死了,不过还是完成了,希望高手能给我指点一下,不足之处:big
- assume cs:code,ds:data,ss:stack
- stack segment
- dw 0,0,0,0,0,0,0,0
- stack ends
-
- data segment
- db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
- db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
- db '1993','1994','1995' ;以上是表示21年的21个字符串
-
- dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
- dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ;以上是表示21年公司总收入的21个dword型数据
-
- dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
- dw 11542,14430,15257,17800
- ;以上是表示21年公司雇员人数的21个word型数据
- data ends
- table segment
- db 21 dup ('year summ ne ?? ')
- table ends
- code segment
- start:
- mov ax,data
- mov ds,ax
- mov ax,stack
- mov ss,ax
- mov sp,16
- mov cx,21 ;最外层循环,要做21次
- mov di,0
- mov bx,00e0h ;不用下面的es段存器就用bx完成,但是它为什么是00e0这个就得用debug查了
-
- ;mov es,bx ;用es寄存器完成
- ;mov bx,0
-
- mov bp,0
-
- mov si,0
- push si
- s0:
- mov al,ds:[si]
- inc si
- mov [bx].0[di],al
- mov al,ds:[si]
- inc si
- inc di
- mov [bx].0[di],al
- mov al,ds:[si]
- inc si
- inc di
- mov [bx].0[di],al
- mov al,ds:[si]
- inc si
- inc di
- mov [bx].0[di],al ;以上语句是将年份放入table里
-
- inc di
- mov [bx].0[di],20h ;放入空格
- inc di
-
- add si,80
-
- mov ax,ds:[si]
- push ax ;将收入的前俩个字节入栈保存
- mov dx,ds:[si+2]
- mov [bx].0[di],ax
- inc di
- inc di
- mov [bx].0[di],dx ;这里是将收入放入table里
-
- inc di
- inc di
- mov [bx].0[di],20h ;放入空格
- inc di
-
- add si,84 ;这里有问题,需要进行不断的调整!
- sub si,bp ;因为下面的数据大小不一,所以在这里需要进行调整!
-
- mov ax,ds:[si]
- mov [bx].0[di],ax ;这里是将雇员数放入table里
-
- inc di
- inc di
- mov [bx].0[di],20h ;放入空格
-
- sub di,2 ;再次di执向雇员数
-
- pop ax ;取出收入的前2个字节
- div word ptr [bx].0[di]
- add di,3
- mov [bx].0[di],ax ;将最后除法得到的平均收入放入table中
-
- inc di
- inc di
- mov [bx].0[di],20h ;放入空格
- inc di
-
- pop si
- add si,4
- push si
-
- add bp,2
- loop s0
-
- mov ah,4ch
- int 21h
- code ends
- end start
-
复制代码
|
|