《实验6汇编实验(共6页).docx》由会员分享,可在线阅读,更多相关《实验6汇编实验(共6页).docx(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上数学与软件科学学院 实验报告学期:2017至 2018第 2 学期 2018年4月4日 课程名称: 汇编语言 专业:信息与计算科学 班级: 2015级_5班实验编号:6实验项目: 编程实现大小写字母间的转换指导教师:冉茂华姓名:黄玉含 学号: 实验成绩:Power idea公司从1975年成立一直到1995年的基本情况如下。年份 收入(千美元)雇员(人)人均收入(千美元)1975163?1976227?19773829?1978135613?1979239028?1980800038?199517800? 下面的程序中,已经定义好了这些数据:data segment
2、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, dd , ; 以上是表示21年公司总收入的21个dword型数据 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,1443
3、0,15257,17800 ; 以上是表示21年公司雇员人数的21个word型数据data endstable segment db 21 dup (year summ ne ?)table ends注: 上述程序代码被收集在附件attachment.txt文件中。 实验任务:编程,将data段中的数据按照如下格式写入到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。提示: 可将data段中的数据看成多个数组,而将table中的数据看成是一个结构型数据的数组,每个结构型数据中包含多个数据项。可用BX定位每个结构型数据,用idata定位数据项,用SI定
4、位数组项中的每个元素。对于table中的数据的访问可采用BX+idata+SI的寻址方式。注意:该程序是目前为止最复杂的程序,它几乎用到了前面学过的所有知识和编程技巧。所以,该程序是对前面知识的最好的实践总结,请重视。代码如下:assume cs:code,ds:datadata 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,244
5、86,50065,97479, dd , dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800 mov ax,4c00h int 21hdata endstable segment db 21 dup(year summ ne ? )table endscode segmentstart: mov ax,data mov ds,ax mov ax,table mov es,ax mov bx,0 mov cx,21 mov bp,0 s:mov dx,cx
6、mov cx,2 mov si,0 mov di,0s0:mov ax,bx+0+si mov es:bp+di,ax add si,2 add di,2 loop s0 inc di mov si,0 mov cx,2s1:mov ax,bx+84+si mov es:bp+di,ax add si,2 add di,2 loop s1 add bx,4 add bp,16 mov cx,dx loop s mov cx,16 mov bp,0 mov bx,0s3: mov ax,bx+168 mov es:bp+10,ax mov dx,es:bp+7 mov ax,es:bP+5 mo
7、v di,es:bp+10 div di mov es:bp+13,ax add bx,2 add bp,16 loop s3 mov ax,4c00h int 21h code endsend start结果分析:采用结构体的思想,这里将结构体转化为相对基址变址寻址bx+idata+si.Bx代表变量名,指明了结构体变量名称。Idata表示数据项地址。Si表示idata中的每一个字符。div是除法指令:除数:有8位,16位两种,在一个reg或内存单元中。被除数:默认放在AX或DX和AX中,如果除数为8位,被除数则为16位,默认在AX中存放;如果除数为16位,被除数为32位,在DX和AX中存放,DX高16位,AX存低16位。结果:如果除数为8位,则AL存储除法操作的商,AH存放除法操作的余数;如果除数为16位,则AX存除法操作的商,DX存除法操作的余数。表示内存单元:用寄存器间接表示。用 byte/word ptr直接表示。专心-专注-专业
限制150内