汇编语言学习(王爽)实验7
这个实验的意义极大,总合之前的全部知识,而且难度不大,很适合拿来啊巩固所学(我从开始写到现在居然写了5天,我这个拖延症……)
其实不是想想的那么难,图中标明了只有年份,按字符存储,其他直接数据就好了,所以,我们只需要成功一次,控制好迭代寄存器,就可以轻松实现
下面是我的代码,仅供参考:
assume cs:code, ss:stack 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 个年份的字符串 dd 16,22,382,1356,2390,8000,16000,24886,50065,97479,140417,197514 ;076C:0054 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ; 21 年公司的总收入 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 ;076C:00A8 dw 11542,14430,15257,17800 ; 21 年公司雇员人数 data ends table segment db 21 dup ('year summ ne ?? ') ;076C:00E0 table ends stack segment dw 8 dup (0) stack ends code segment start: mov ax, stack mov ss, ax mov sp, 10H ;配置栈段 mov ax, data mov ds, ax ;配置数据源 mov ax, table mov es, ax ;配置接受点 mov bx, 0 mov bp, 0 mov si, 0 mov cx, 15H ;公司个数 COPYDATA: push ds:[bx+di] pop es:[bp] push ds:[bx+di+2] pop es:[bp+2] ;拷贝 年份 push ds:54H[bx+di] pop es:5[bp] push ds:54H[bx+di+2] pop es:5[bp+2] ;拷贝 收入 push ds:0A8H[di] pop es:0AH[bp] ;拷贝 mov dx, es:5[bp+2] mov ax, es:5[bp] div Word ptr ds:0A8H[di] mov es:0DH[bp], ax ;人均收入 add bp, 10H add di, 2 add bx, 2H loop COPYDATA mov ax, 4c00h int 21 code ends end start
最终实现的结果的部分图片:
大道五十,天衍四九,人遁其一!