-
2020-04-10 21:31:31
汇编语言实验七完整代码
建议先自己思考问题的答案,不懂则返回看书这个程序是目前位置最复杂的程序,这个程序一定要自己动手写,之后还会再用到这个程序的。它主要考察的是寻址方式、对大量数据的处理,需要自己的耐心严谨。
主要思路: 先计算第四列(人均收入)的值,并存在table中的相应位置,然后再把其余数据移到table中的相应位置
assume cs:code data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985' db '1986','1987','1988','1989','1990','1991','1992','1993','1994','1995' dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980 dd 590827,803530,1183000,1843000,2758000,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 stack segment dw 0,0,0,0,0,0,0 stack ends table segment db 21 dup ('year summ ne ?? ') table ends code segment start: mov ax,data mov es,ax mov si,0 mov ax,table mov ds,ax mov di,0 mov ax,stack mov ss,ax mov sp,16 mov bx,0 mov cx,21 s0: mov ax,es:[si] mov ds:[di+bx],ax add si,2 add di,2 mov ax,es:[si] mov ds:[di+bx],ax mov ax,es:[si+82] mov ds:[bx+di+3],ax mov ax,es:[si+84] mov ds:[bx+di+5],ax add si,2 mov di,0 add bx,16 loop s0 mov bx,0 mov si,168 mov di,5 mov cx,21 s1: mov ax,es:[si] mov ds:[bx+di+5],ax mov ax,ds:[bx+di] mov dx,ds:[bx+di+2] div word ptr ds:[bx+di+5] mov ds:[bx+di+8],ax add si,2 add bx,16 loop s1 mov ax,4c00h int 21h code ends end start
运行前的内存截图:
此代码在DOSBox下的运行结果:
更多相关内容 -
汇编语言实验七
2021-06-20 16:17:38一、 实验目的 学会寻址方式在结构化数据访问中的应用。 二、实验内容或主要代码 Poweridea公司从1975年成立一直到1995年的基本情况如下。 下面的程序中,已经定义好了这些数据: assume cs:code data segment db ...寻址方式在结构话数据访问中的应用
一、 实验目的
学会寻址方式在结构化数据访问中的应用。
二、实验内容或主要代码
Poweridea公司从1975年成立一直到1995年的基本情况如下。
下面的程序中,已经定义好了这些数据:
assume cs:codedata 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个字符串 4 * 21 = 84dd 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型数据 4 * 21 = 84dw 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型数据 2 * 21 = 42
data endstable segment
db 21 dup ('year summ ne ?? ')
table ends
编程,将data段中的数据按如下格式写到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。
三、 实验结果或截图
assume cs:codedata 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, 97497, 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, 17800data ends
table segment
db 21 dup ('year summ ne ?? ')
table endscode segment
start: mov ax, data
mov ds, ax
mov ax, table
mov es, ax
mov si, 0
mov di, 0
mov cx, 21 ; 21年,循环21次
s:mov al,[bx]
mov es:[di],al
mov al,[bx+1]
mov es:[di+1],al
mov al,[bx+2]
mov es:[di+2],al
mov al,[bx+3]
mov es:[di+3],almov ax,54h[bx]
mov dx,56h[bx]
mov es:5h[di],ax
mov es:7h[di],dxmov ax,0a8h[si]
mov es:0ah[di],axmov ax,54h[bx]
div word ptr ds:0a8h[si]
mov es:0dh[di],axadd bx,4
add si,2
add di,16loop s
mov ax, 4c00H
int 21H
code endsend start
四、实验分析或体会
此次实验难度较大,也让我认识到了自己的不足,通过查阅资料以及听老师讲解后才圆满完成此次实验。通过这次实验我也巩固了寻址方式的使用:直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址。也让我理解了dup、dd、dw等的作用,利用dup这个操作符可以很快的定义一个较大容量的栈段。
熟能生巧,只有不断学习才能更加理解与掌握知识。 -
王爽汇编语言第三版实验七
2018-10-28 17:51:45王爽汇编语言第三版实验七 -
汇编语言实验七(王爽)新方法
2022-04-02 20:36:21汇编语言程序设计实验七王爽
这里offset salary就是得到收入数据在data段里的偏移地址
大概思路是先将1995年的数据放进table段里,照着每个字段放进table,模拟这一过程,再思考怎么利用bx,bp循环assume cs:codesg data segment year 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个字符串 salary 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型数据 emp dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,45257,17800 ;以上是表示21年公司雇员人数的21个word型数据 data ends table segment db 21 dup ('year summ ne ?? ') table ends codesg segment start: mov ax,data mov ds,ax mov ax,table mov es,ax mov cx,21 mov bx,0 mov bp,0 mov si,0 mov di,0 s: mov ax,ds:[bp] mov es:[si],ax add si,2 mov ax,ds:[bp+2] mov es:[si],ax;year add si,3;(si)=(si)+3=2+3 到收入第一字节 mov di,offset salary;工资数据偏移地址 mov ax,ds:[bp+di] mov es:[si],ax add si,2 mov ax,ds:[bp+di+2] mov es:[si],ax;salary add si,3;将si移到emp第一字节上 mov di,offset emp;雇员偏移地址 mov ax,ds:[bx+di] mov es:[si],ax;emp add si,3 mov di,offset salary;工资数据偏移地址 mov ax,ds:[bp+di];被除数低16位 mov dx,ds:[bp+di+2];被除数高16位 mov di,offset emp;雇员偏移地址 div word ptr ds:[bx+di];除数 mov es:[si],ax;商赋值 add si,3;下一行开头 add bp,4;下一个年份,收入,自然 前进4 add bx,2;下一个雇员数据,右移2个字节 loop s mov ax,4c00h int 21h codesg ends end start
-
汇编语言所有实验报告
2019-03-07 10:44:38汇编语言实验报告,包括顺序与分支程序设计、循环与子程序程序设计、算术运算与代码转换程序设计以及输入输出程序设计。 -
汇编语言程序设计全部实验报告.zip
2021-04-22 15:54:48汇编语言实验七寻址方式在结构化数据访问中的应用 汇编语言实验八分析一个奇怪的程序 汇编语言实验九根据材料编写程序 汇编语言实验十编写子程序(显示字符串) 汇编语言实验十一编写子程序 汇编语言实验十二编写0号... -
汇编语言实验报告
2018-05-13 11:48:061、写出书中习题3.13所用指令,用DEBUG运行并察看和验证运行结果,在实验报告中画出堆栈区和SP的内容变化过程示意图。 2、用加减法指令计算下列各组十六进制数加减结果并和你的手算结果比较: (1)34H,22H (2)56H,78H ... -
汇编语言实验4-使用MASM.doc
2021-11-09 21:27:49汇编语言实验报告 -
汇编语言-实验7解答
2021-02-23 01:23:03'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,...一、题目
二、分析
首先可以可以看到data中有三个数组,data中数组1起始固定值是0,数组2起始固定值是84(21*4计算得到),数组3起始固定值是168(42*4计算得到)。分别可以表示为0[bp]、84[bp]、168[bx]。
table可以看做是一个包含结构体的数组,我们可以叫它数组4,其中年份是es:[si].0,长度为4字节;收入是[si].5,长度为4字节;雇员数是es:[si].10,长度为2字节;人均收入是es:[si].13,长度为2字节。
对于数组1、数组2因为都是存储4字节,所以每次循环会加4;数组3存储2字节,所以每次循环会加2;数组4存储16字节,所以每次循环加16。因此我们需要用3个寄存器记录每个数组的索引,分别对应bp、bx、si。
每个数组长度均为21,所以可以让cx等于21,也就是循环21次得到结果。
其程序如下:
三、程序代码
assume cs:codesg 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 codesg segment start:mov ax,data mov ds,ax mov ax,table mov es,ax mov cx,21 mov bp,0 mov bx,0 mov si,0 s:mov ax,ds:[bp] mov es:[si],ax add si,2 mov ax,ds:[bp+2] mov es:[si],ax add si,3 mov ax,ds:[bp+84] mov es:[si],ax add si,2 mov ax,ds:[bp+86] mov es:[si],ax add si,3 mov ax,ds:[bx+168] mov es:[si],ax add si,3 mov ax,ds:[bp+84] mov dx,ds:[bp+86] div word ptr ds:[bx+168] mov es:[si],ax add si,3 add bp,4 add bx,2 loop s int 21H codesg ends end start
-
汇编语言——实验七
2021-10-09 17:05:01算法实现1: 从键盘输入一位十六进制数,并将其转换为十进制数输出显示。 注意数据区的定义和使用,存储自己所使用的数据以及如何存储访问 代码: code segment assume cs:code start: mov ah,1 ... -
王爽汇编语言实验10
2018-11-02 18:19:14王爽汇编语言实验10 -
汇编语言实验报告6.doc
2020-02-01 20:06:31实验内容:循环子程序设计 将内存单元存储的8个两位16进制数:01H, 25H, 38H, 62H, 8DH, 9AH, BAH, CEH依次显示在屏幕上 -
合肥工业大学汇编语言实验报告一.docx
2019-05-26 20:05:03合肥工业大学汇编语言实验报告一 一. 实验目的 1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。 2、掌握8086/8088的寻址方式及多字节数据的处理方法。 二. 实验内容 1、利用DEBUG程序中的“E”... -
汇编语言实验7编程资料
2022-03-31 19:46:18汇编语言实验7 -
王爽 汇编语言实验7
2019-02-01 16:56:01dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226,11542,14430,15257,17800 data ends table segment db 21 dup('year summ ne ?? ') table ends code segment start:mov ax,... -
微机原理与汇编语言-实验报告(全).doc
2021-08-23 17:58:33微机原理与汇编语言-实验报告(中北大学大数据学院)(前4个实验都可以直接运行,后面的几个需要用到proteus,这个要自己根据自己的情况搞,咱就不能保证在你电脑上能不能运行了) 实验一 简单程序设计 1. 编制一个... -
武汉理工大学汇编语言程序设计实验报告
2020-11-07 13:34:58这是武汉理工大学汇编语言设计实验报告!为whuters提供无微不至的人文主义关怀和亲切的慰问! 这是武汉理工大学汇编语言设计实验报告!为whuters提供无微不至的人文主义关怀和亲切的慰问! 这是武汉理工大学汇编语言... -
王爽《汇编语言》实验7
2019-09-02 22:47:24老实说,自己的编程技能差的还太多,完成这个实验竟用了足足3个小时,包括构思、编辑、调试、修改、再调试…… 不过,总算调通了,可以进行下一章的学习了。 assume cs:codesg data segment db '1975','1976','... -
计算机原理汇编语言实验一(MASM for Windows 环境下的汇编语言编程环境使用)(北理工)
2020-02-25 16:04:27实验一 MASM for Windows 环境下的汇编语言编程环境使用 1. 实验目的 1) 掌握MASM for Windows 环境下的汇编语言编程环境使用; 2) 掌握汇编语言程序设计的基本流程; 3) 掌握8086/8088基本指令的使用方法和... -
汇编语言 王爽 实验七 汇编代码.asm
2017-09-29 15:56:02汇编语言 王爽 实验七 独立完成 汇编语言 王爽 实验七 独立完成 -
汇编语言实验报告3.doc
2020-01-16 19:26:06实验内容: 将内存单元存储的字节数据的16进制数的低位输出到显示器并显示。 实验要求: (1)运行程序后,屏幕...(2)进行反汇编; (3)显示内存中存储的数据; (4)比较单步运行过程中“T”和“P”命令的区别 -
王爽《汇编语言》实验七答案与解析
2021-07-16 14:42:56王爽汇编语言第三版-实验7(寻址方式在结构化数据访问中的应用) 相信大家在学习到这一定会对此(实验7)感到无从下手,这就对了毕竟作者都说难,那能不难吗? 下面我将放出我的代码,我相信是全球首份.因为没人能像我一样写... -
汇编语言实验报告5.doc
2020-02-01 20:04:56实验报告:利用冒泡法排序算法,将内存单元存储的数35H,78H,25H,13H,8H,D2H由小到大进行排序 -
汇编语言实验报告2.doc
2020-01-14 22:30:54实验内容:从键盘键入一个大写英文字母,存放到内存单元BUF1中,再转化为对应的小写字母,存放到内存单元BUF2中。 要求:(1)显示程序运行前后内存单元BUF1、BUF2中存储的数据; (2)显示程序运行前和运行后各... -
汇编语言实验2-汇编语言基础.doc
2021-11-09 21:27:50汇编语言实验报告 -
《汇编语言》第四版——实验七
2021-09-17 08:59:06实验七——《寻址方式在结构化数据访问中的应用 》 这个实验对于初学而言确实比较复杂,用到了前8章几乎所有的知识点,但这的确也是前8章最好的总结性实验。 题目 assume cs:code data segment db '1975','1976'... -
汇编语言实验大集合
2019-07-16 01:12:12包含以下文件: 1.冒泡排序 2.在数组中查找指定数字,含有该数字输出YES,否则输出NO 3.递归实现阶乘计算 4.循环方式实现阶乘计算 5.给定英文句子显示单词的数目 6.读文件进行排序并输出到另一个文件中 -
合肥工业大学汇编语言上机实验报告(全,完成版)2019版
2019-05-04 19:37:11合肥工业大学汇编语言上机实验报告(全,完成版)2019版,含完整实现代码。 合肥工业大学汇编语言上机实验报告(全,完成版)2019版,含完整实现代码。 合肥工业大学汇编语言上机实验报告(全,完成版)2019版,含... -
东北大学汇编语言实验报告(全部)满分版
2018-11-04 19:41:22东北大学汇编语言实验报告(全部)东北大学汇编语言实验报告(全部)满分版 -
王爽《汇编语言》-实验7 代码
2022-03-01 15:41:21王爽汇编语言中实验7实现代码