《汇编语言》第3版 (王爽)实验7解析

文章详细分析了在DOS系统中,两种方法对结构化数据(如年份、收入、雇员数和计算出的人均收入)进行逐个传输和一次性传输的处理过程,展示了两种寻址方式在数据访问中的效率差异。
摘要由CSDN通过智能技术生成

实验7 解析


实验7 寻址方式在结构化数据访问中的应用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解析:
方法一:将每个数据项逐个进行传输,共有4个数据项(分别是年份、收入、雇员数、人均收入)人均收入需要计算后得到,每个数据项又有21个元素,所以需要传输21次

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 ;ds指向data
       mov ax,table
       mov es,ax ;es指向table
       mov si,0 
       mov di,0
       mov bx,0

      ;转移年份
       mov cx,21 ;一共21个年份
  year:mov ax,ds:[si] ;将数据中的年份低16位取出放入ax中
       mov es:[bx],ax ;将ax中的数据放入table中
       mov ax,ds:[si+2]  ;将数据中的年份高16位取出放入ax中
       mov es:[bx+2],ax  ;将ax中的数据放入table中
       add si,4 ;si+4指向下一个年份
       add bx,16 ;bx+16指向下一个数组
       loop year ;转移到year

       ;转移收入
       mov bx,0
       mov di,5 ;设定table存放收入的起始地址
       mov cx,21 
income:mov ax,ds:[si] ;转移收入低16位
       mov es:[bx+di],ax
       mov ax,ds:[si+2] ;转移收入高16位
       mov es:[bx+di+2],ax
       add bx,16 ;bx+16指向下一组数据
       add si,4  ;si+4指向下一个收入
       loop income ;转移到income

       ;转移雇员数
       mov bx,0
       mov di,10 ;设定table存放雇员数的起始地址
       mov cx,21
   Num:mov ax,ds:[si] ;转移雇员数(只有两字节,所以使用ax传输一次即可)
       mov es:[bx+di],ax
       add bx,16 ;bx+16指向下一组数据
       add si,2 ;si+2指向下一个雇员数
       loop Num
        
       ;计算人均收入
       mov bx,0
       mov cx,21
 pcome:mov ax,es:[bx+5] ;16位放入ax中
       mov dx,es:[bx+5+2] ;16位放入dx中
       div word ptr es:[bx+10] ;除以人数
       mov es:[bx+13],ax ;商存放在ax中
       add bx,16 
       loop pcome

       mov ax,4c00h
       int 21h

 code ends
 end start

方法二:一次传输一组数据,一共传输21次

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  ;ds指向data
      mov ax,table
      mov es,ax  ;es指向table
      mov si,0
      mov di,0
      mov bx,0
  
      mov cx,21 ;一个21组数据
    s:;转移年份(4字节)
      mov ax,ds:[si] ;转移年份低16位
      mov es:[bx],ax
      mov ax,ds:[si+2] ;转移年份高16位
      mov es:[bx+2],ax
      ;转移收入(4字节)
      mov ax,ds:[si+84] ;转移收入低16位
      mov es:[bx+5],ax
      mov ax,ds:[si+84+2] ;转移收入高16位
      mov es:[bx+7],ax
      ;转移雇员数(2字节)
      mov ax,ds:[168+di] ;转移雇员数(只有2字节,所以使用ax转移一次即可)
      mov es:[bx+10],ax
      ;计算人均收入(2字节)
      mov ax,es:[bx+5] ;将收入的低16位放入ax中
      mov dx,es:[bx+5+2] ;将收入的高16位放入dx中
      div word ptr es:[bx+10] ;除以雇员数
      mov es:[bx+13],ax ;将商保存(除法后商存放在ax中)

      add di,2 ;di+2指向下一个雇员数
      add si,4 ;si+4指向下一个年份和收入
      add bx,16 ;bx+16指向下一组数据
      loop s

      mov ax,4c00h
      int 21h

code ends
end start

将上面程序在DOS中运行后效果如下:
在这里插入图片描述
在这里插入图片描述

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 《汇编语言 第4 王爽 pdf》是一本经典的计算机教材,主要介绍了汇编语言的基本原理和编程方法。本书内容详实全面,对于学习汇编语言具有很强的实用性和指导性。 首先,本书通过介绍计算机组成原理、指令系统和寻址方式等基础知识,帮助读者全面理解计算机的工作原理。通过此部分的学习,读者可以对计算机的各个组成部分进行了解,为后续的汇编语言编程打下良好基础。 其次,本书详细讲解了汇编语言的基本语法和指令集。通过具体的代码示例和相关练习,读者可以逐步掌握如何进行数据的存储和运算,以及如何使用寻址方式进行数据传递和控制程序流程。同时,本书还介绍了常用的汇编指令和编程技巧,如循环、条件判断、数组和函数等,帮助读者解决实际问题。 此外,本书还特别关注了汇编语言与C语言的关系和应用。通过对比分析,读者可以更好地理解两种语言之间的联系和差异,充分利用汇编语言的优势来进行性能优化和系统开发。 总结来说,《汇编语言 第4 王爽 pdf》是一本经典而实用的教材,对于理解计算机底层原理、提高程序编写能力和进行系统开发都具有重要的意义。无论是计算机科学专业的学生,还是从事相关工作的从业者,都可以通过学习本书来提升自己的技术水平。 ### 回答2: 《汇编语言 第4》是王爽编写的一本经典的汇编语言教材。该教材以通俗易懂的方式,介绍了汇编语言的基本原理和应用技巧。 在这本书中,王爽首先系统地介绍了计算机的基本知识,包括计算机的组成结构、运算器、控制器等。然后,他详细讲解了汇编语言的基本知识,包括汇编语言的特点、汇编指令的格式、汇编程序的编写等。 接着,王爽介绍了汇编语言的程序设计方法和技巧。他通过丰富的例子和详细的讲解,教授了如何使用汇编语言编写各种程序,如输入输出程序、字符串处理程序、数组操作程序等。通过学习这些例子,读者可以逐步掌握汇编语言的应用。 此外,王爽还介绍了8086指令系统和保护模式的编程,并讲解了汇编程序的调试和优化技巧。他通过大量的实例和实践指导,帮助读者深入理解和掌握汇编语言的高级知识和技术。 《汇编语言 第4》的特点是内容全面、深入浅出,适合初学者和有一定汇编语言基础的读者阅读。这本书的另一个优点是配有大量的习题和实践项目,读者可以通过完成这些习题和项目,进一步加深对汇编语言的理解和应用能力。 综上所述,《汇编语言 第4》是一本权威、经典且实用的汇编语言教材,可以帮助读者全面理解汇编语言的原理和应用,并掌握汇编语言的编程技巧和调试优化技巧。对于想要深入了解计算机底层原理和编程的读者来说,阅读这本书是一个很好的选择。 ### 回答3: 《汇编语言 第4》是由王爽撰写的经典教材,该书以汇编语言为主题,全面系统地介绍了汇编语言的基本概念、基本指令和编程技巧。 这本教材共分为13章,内容包括了汇编语言的发展历程、基本概念和原理、汇编语言的基本组成和格式。同时,还介绍了常用的寻址方式和常见的指令集,如8086指令集和80386指令集等。此外,书中还详细说明了汇编语言程序的编写和调试方法,并给出了大量的实例和练习题,以帮助学习者掌握汇编语言的编程技巧。 《汇编语言 第4》的特点是理论与实践相结合,既有理论知识的系统介绍,又有大量的实例和练习,可以帮助读者深入理解汇编语言的原理和应用。另外,该书对一些常见的编程错误和调试技巧也进行了详细讲解,有助于读者提高编程的效率和调试的准确性。 本书的优点在于,用简明的语言和通俗的讲解风格,将抽象的概念和复杂的原理以生动的方式呈现给读者,使读者能够轻松理解和掌握汇编语言的知识。同时,书中的例子和练习题也非常实用和有针对性,能够帮助读者熟练掌握汇编语言的编程技巧。 总之,《汇编语言 第4》是一本经典的汇编语言教材,对于想要深入学习和了解汇编语言的读者来说,是一本值得推荐的书籍。无论是初学者还是有一定基础的读者,都可以通过阅读该书来提高自己的汇编语言编程能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值