汇编语言——寻址方式的综合应用及转移指令的原理
来源:互联网 发布:c语言读入txt文本文件 编辑:程序博客网 时间:2024/06/01 10:29
一、 实验目的
- 定位内存单元的寻址方式汇总
- 寻址方式的综合应用
- 转移指令的分类和原理
- 熟悉在显存中编程的方法
二、 实验内容及要求
(一)寻址方式的汇总及综合应用
- 定位内存单元的寻址方式有几种,并举例说明。
- 寻址方式在结构化数据访问中的应用。
题目如下
Power idea公司从1975年成立一直到1995年的基本情况如下。 年份 收入(千美元)
雇员 人均收入(千美元) 1975 16 3 ? 1976 22 7 ?
1977 382 9 ? 1978 1356 13 ? 1979
2390 28 ? 1980 8000 38 ? M 1995 5937000
17800 ?下面的程序中,已经定义好了这些数据: 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编程,将data段中的数据按如下格式写入到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。
提示:可将data段中的数据看成是多个数组,而将table中的数据看成是一个结构型数据的数组,每个结构型数据中包含多个数据项,可用bx定位每个结构型数据,用idata定位数据项,用si定位数组项中每个元素,对于table中的数据的访问可采用[bx].idata和[bx].idata[si]的寻址方式。
代码如下
assume cs:code,ds:data,es:tabledata segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983'db '1984','1985','1986','1987','1988','1989','1990','1991','1992'db '1993','1994','1995';以上是表示21年的字符串 4 * 21 = 84 8个位dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000;以上是表示21年公司总收入的dword型数据 4 * 21 = 84 32位dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226dw 11542,14430,15257,17800;以上是表示21年公司雇员人数的21个word型数据 2 * 21 = 42 16个位data endstable segmentdb 21 dup ('year summ ne ?? ') ; 'year summ ne ?? ' 刚好16个字节table endscode segmentstart:;data数据 放在dsmov ax,datamov ds,ax;table数据 放在 esmov ax,tablemov es,ax;三个寄存器初始化mov bx,0 ;data中数据定位(和idata结合,用于年份和收入)mov si,0 ;table中定位(和idata给合用于定位存放数据的相对位置)mov di,0 ;data中用于得到员工数;cx循环次数mov cx,21;循环内容s: ;年 ;将年从data 到 table 分为高16位和低16位 mov ax,[bx] mov es:[si],ax mov ax,[bx+2] mov es:[si+2],ax ;空格 ;table 增加空格 mov byte ptr es:[si+4],20h ;收入 ;将收入从data 到 table ,收入数据分为高16位和低16位 mov ax,[bx+84] mov es:[si+5],ax mov ax,[bx+86] mov es:[si+7],ax ;空格 ;table 增加空格 mov byte ptr es:[si+9],20h ;雇员数 ;将雇员数从data 到 table mov ax,[di+168] mov es:[si+10],ax ;空格 ;table 增加空格 mov byte ptr es:[si+12],20h ;计算工资 ;取ds处工资,32位,dx放高16位,ax放低16位 mov ax,[bx+84] mov dx,[bx+86] ;计算人均收入,结果为16位,保存在ax中 div word ptr ds:[di+168] ;将结果存入table处 mov es:[si+13],ax ;空格 ;table 增加空格 mov byte ptr es:[si+15],20h ;改变三个寄存器值,实现循环 add si,16 add di,2 add bx,4loop smov ax,4c00hint 21hcode endsend start
程序debug结果如下。
如果图片显示过小,请右键->在新标签页中打开
- 汇编语言——寻址方式的综合应用及转移指令的原理
- 汇编语言-转移指令的原理
- 汇编语言08——转移指令的原理
- 汇编语言的寻址方式
- 指令及操作数的寻址方式
- 王爽《汇编语言》第9章 转移指令的原理
- 汇编语言学习笔记(九)转移指令的原理
- 【汇编语言/底层开发】9、转移指令的原理
- 汇编语言学习第九章-转移指令的原理
- 王爽 《汇编语言》 读书笔记 九 转移指令的原理
- 指令的寻址方式
- 汇编语言基础四 —— 操作数的寻址方式
- 转移指令的原理
- 转移指令的原理
- 转移指令的原理
- 汇编语言学习笔记之与转移地址有关的寻址方式
- 读王爽老师汇编语言笔记---转移指令的原理和call,ret指令
- 与转移地址有关的寻址方式
- iTerm2 恢复默认设置
- maven解释、安装、添加依赖
- 尝试在win7x64系统上查看tex格式的文档
- Android Volley完全解析(一),初识Volley的基本用法
- 若干秒后不操作自动关闭窗口
- 汇编语言——寻址方式的综合应用及转移指令的原理
- 复盘二进制的习题(2)
- Python网络通信之黏包问题(五)基于SocketServer模块和socket模块
- SUSE Linux Enterprise Server 12 (x86_64) rpm方式 安装gcc
- 基于qt和opencv的远程视频监控与播放
- 二叉树基本操作汇总练习
- 求两个数的最大公约数和最小公倍数
- 初学Nginx windos下安装
- Java 8新特性汇总