王爽《汇编语言》课程设计一.pdf
《王爽《汇编语言》课程设计一.pdf》由会员分享,可在线阅读,更多相关《王爽《汇编语言》课程设计一.pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程设计(一)一、有除法溢出的dtoc子程序为:dtoc:push cx s:mov cx,10 call divdw;进行 16 位除法,被除数低16 位存放在 ax 中,高 16位存放在 dx 中,除数为 10,存放在 cx 中,并调用不会产生溢出的除法运算的子程序divdw add cx,30h;将余数加上30h,就得到十进制数码字符对应的ASCII码mov si,cx;将十进制数码字符对应的ASCII 码存放在数据段中inc si push ax;保存此时的 ax add ax,dx;商是由 ax 和 dx 中的数据组合而成,为了判断商是否为0 mov cx,ax;将商的高 16 位和
2、低 16 位加起来,送给 cx pop ax;恢复 ax jcxz ok;若商为 0,则结束子程序jmp short s ok:mov byte ptr si,0;在字符串的结尾添个0 call back;调用把字符串反过来的子程序back pop cx ret divdw:mov bx,ax mov ax,dx mov dx,0 div cx push ax mov ax,bx div cx mov cx,dx pop dx ret back:push di push cx mov cx,si mov di,0 s1:mov al,di mov ah,0 push ax inc di loo
3、p s1 mov di,0 mov cx,si s2:pop ax mov di,al inc di loop s2 pop cx pop di ret 二、课程设计首先,定义数据的时候,定义了一个栈段,在data段的开始定义了一个有10 字节的空间,用来把数据转换成十进制形式的字符串,后面的总收入、雇员数、人均收入均为 dword 数据,方便后面统一来进行循环处理。其次,刚开始的时候,用一个循环来计算人均收入,并把得到的数据放在data段中(在data段中定义了 21 个为 0 的 dword 数据用来存放人均收入)。再次,在总体思路上,就是先定义一个 32*21 个字节的 table 段,
4、把分别用子程序 dtoc把每个用二进制存放的数据转换成对应的十进制字符串,把字符串存放到table 段中相应的位置,通过四个循环能把所有数据对应的字符串存放到table 段中,这时的 table段中的存储模式与要求显示在屏幕上的模式一样,所以可以用一个双重循环将table中的内容一个字节一个字节地复制到显示缓冲区的偶地址上,奇地址存放字符的颜色属性白色 07h。不用调用子程序show_str。代码如下:代码 2 assume cs:code stack segment db 64 dup(0)stack ends data segment db 10 dup(0)db 1975,1976,19
5、77,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 dd 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635
6、,8226 dd 11542,14430,15257,17800 dd 21 dup(0)data ends table segment db 672 dup();定义一个内存为672=32*21 个字节的段table ends code segment start:mov ax,data mov ds,ax mov ax,table mov es,ax mov ax,stack mov ss,ax mov sp,64;循环 s0 的作用是计算人均收入,并把结果存储到data段中 ds:262 mov di,94 mov cx,21 s0:mov ax,ds:di mov dx,ds:di+2
7、 div word ptr ds:di+84 mov di+168,ax add di,4 loop s0;循环 s 的作用是将年份字符串逐一写入table 段中的 14 列、121 行mov bp,0;table 段中用 bp+si来定位数据,bp 定位行,si 定位列,也就是字符串中的每个字符mov bx,10;data段用bx+di 来定位数据,bx 定位年份字符串,di 来定位字符串中的每个字符mov cx,21;有 21 个年份字符串s:push cx mov si,0 mov di,0 mov cx,4;每个字符串有 4 个字符s1:mov al,bx+di mov es:bp+s
8、i,al inc si inc di loop s1 add bp,32 add bx,4 pop cx loop s;循环 s2 的作用是将总收入转换成对应的十进制字符串,存放到table 段中,并从第 9 列开始存放字符串,共21 个字符串mov bp,8;table段中用 bp+si来定位数据,bp 定位行,si 定位列,也就是字符串中的每个字符mov bx,94;data段用bx+di 来定位数据,bx 定位总收入这个数据项mov cx,21 mov di,0 s2:mov si,0 mov ax,bx+di mov dx,bx+di+2 push di call dtoc;调用子程序
9、 dtoc 将总收入转换成对应的十进制字符串,但是这个字符串是反着的,比如16,转换成字符串就成了 61call back;调用子程序 back将字符串反过来,并存放到table段中相应的位置pop di add bp,32 add di,4 loop s2;循环 s5 的作用是将雇员数转换成对应的十进制字符串,存放到table 段中,并从第19 列开始存放字符串,共21 个字符串,其原理与循环s2一样mov bp,18 mov bx,178 mov cx,21 mov di,0 s5:mov si,0 mov ax,bx+di mov dx,bx+di+2 push di call dtoc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 王爽 课程设计
限制150内