汇编语言王爽实验七assume cs:code 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' dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800 data ends table segment db 21 dup ('year summ ne ?? ') table ends code segment start: mov ax,data mov ds,ax mov ax,table mov es,ax mov ax,0 mov bx,0 mov dx,0;存储四字节数据的高两字节 mov si,0 mov di,0 mov cx,21 s:mov ax,[si];年份 mov es:[bx],ax mov dx,[si+2] mov es:[bx+2],dx mov ax,[84+si];收入。84 = 4字节*21 mov es:[bx+5],ax mov dx,[84+si+2] mov es:[bx+7],dx div word ptr [168+di];平均工资。先计算人均收入。168 = 84+ 4字节*21 mov es:[bx+13],ax mov ax,[168+di];雇员 mov es:[bx+10],ax add bx,16;bx控制结构体数组成员的存入 add si,4;si控制年份、收入的读取 add di,2;di控制雇员数的读取 loop s mov ax,4c00h int 21h code ends end start按列去做
时间: 2024-04-26 17:20:17 浏览: 76
根据你提供的汇编代码,我看到这个程序定义了三个段:code、data和table。其中,data段中存储了一些年份、收入和雇员数的数据,而table段中则定义了一个结构体数组,用于存储程序计算出来的结果。
该程序的主要功能是计算每一年的平均收入和平均雇员数,然后将这些数据存储到结构体数组中。具体实现过程如下:
1. 将data段和table段的地址分别存储到ds和es寄存器中。
2. 初始化寄存器ax、bx、dx、si、di和cx的值,其中cx的值为21,表示需要处理21个数据。
3. 进入循环s,每次循环处理一个数据。
4. 从data段中读取当前年份和收入数据,并将它们存储到结构体数组的对应成员中。
5. 从data段中读取当前年份的平均工资,然后用当前年份的收入数据除以平均工资,得到当前年份的平均收入,并将它存储到结构体数组的对应成员中。
6. 从data段中读取当前年份的雇员数,并将它存储到结构体数组的对应成员中。
7. 循环计数器cx减1,判断是否继续循环,如果需要继续循环则跳转到循环s的标签处。
8. 程序结束,返回DOS系统。
需要注意的是,该程序的实现方式比较简单,仅仅是通过寄存器和内存操作实现的。如果需要处理更复杂的数据,可能需要使用更多的汇编指令和程序逻辑。
相关问题
汇编语言王爽实验9的感想
作为一名 AI,我没有感受和情感,但我可以为您解析实验9的内容。实验9是关于汇编语言中的串操作指令,如MOVSB、MOVSW、CMPSB等指令的使用。通过实验,学生可以了解串操作指令的使用方法和注意事项,进一步掌握汇编语言编程的技能。同时,实验9也涉及到了字符串的概念和处理方法,这对于学习计算机科学和编程都具有重要意义。总体而言,实验9是一次很好的汇编语言编程实践,能够帮助学生更好地理解和应用汇编语言。
阅读全文