精华内容
下载资源
问答
  • 汇编语言实验七完整代码
    千次阅读
    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: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’
    ;以上是表示21年的21个字符串 4 * 21 = 84

    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型数据 4 * 21 = 84

    dw 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 ends

    table segment
    db 21 dup ('year summ ne ?? ')
    table ends
    编程,将data段中的数据按如下格式写到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。
    在这里插入图片描述
    三、 实验结果或截图
    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, 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, 17800

    data ends

    table segment
    db 21 dup ('year summ ne ?? ')
    table ends

    code 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],al

    mov ax,54h[bx]
    mov dx,56h[bx]
    mov es:5h[di],ax
    mov es:7h[di],dx

    mov ax,0a8h[si]
    mov es:0ah[di],ax

    mov ax,54h[bx]
    div word ptr ds:0a8h[si]
    mov es:0dh[di],ax

    add bx,4
    add si,2
    add di,16

    loop s

    mov ax, 4c00H
    int 21H
    code ends

    end start
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述四、实验分析或体会

    此次实验难度较大,也让我认识到了自己的不足,通过查阅资料以及听老师讲解后才圆满完成此次实验。通过这次实验我也巩固了寻址方式的使用:直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址。也让我理解了dup、dd、dw等的作用,利用dup这个操作符可以很快的定义一个较大容量的栈段。
    熟能生巧,只有不断学习才能更加理解与掌握知识。

    展开全文
  • 王爽汇编语言第三版实验七
  • 汇编语言程序设计实验七王爽

    在这里插入图片描述
    在这里插入图片描述
    这里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
    
    展开全文
  • 汇编语言实验报告,包括顺序与分支程序设计、循环与子程序程序设计、算术运算与代码转换程序设计以及输入输出程序设计。
  • 汇编语言实验七寻址方式在结构化数据访问中的应用 汇编语言实验八分析一个奇怪的程序 汇编语言实验九根据材料编写程序 汇编语言实验十编写子程序(显示字符串) 汇编语言实验十一编写子程序 汇编语言实验十二编写0号...
  • 汇编语言实验报告

    2018-05-13 11:48:06
    1、写出书中习题3.13所用指令,用DEBUG运行并察看和验证运行结果,在实验报告中画出堆栈区和SP的内容变化过程示意图。 2、用加减法指令计算下列各组十六进制数加减结果并和你的手算结果比较: (1)34H,22H (2)56H,78H ...
  • 汇编语言实验报告
  • 汇编语言-实验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
  • 实验内容:循环子程序设计 将内存单元存储的8个两位16进制数:01H, 25H, 38H, 62H, 8DH, 9AH, BAH, CEH依次显示在屏幕上
  • 合肥工业大学汇编语言实验报告一 一. 实验目的 1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。 2、掌握8086/8088的寻址方式及多字节数据的处理方法。 二. 实验内容 1、利用DEBUG程序中的“E”...
  • 汇编语言实验7
  • 王爽 汇编语言实验7

    千次阅读 2019-02-01 16:56:01
     dw 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,...
  • 微机原理与汇编语言-实验报告(中北大学大数据学院)(前4个实验都可以直接运行,后面的几个需要用到proteus,这个要自己根据自己的情况搞,咱就不能保证在你电脑上能不能运行了) 实验一 简单程序设计 1. 编制一个...
  • 这是武汉理工大学汇编语言设计实验报告!为whuters提供无微不至的人文主义关怀和亲切的慰问! 这是武汉理工大学汇编语言设计实验报告!为whuters提供无微不至的人文主义关怀和亲切的慰问! 这是武汉理工大学汇编语言...
  • 王爽《汇编语言实验7

    千次阅读 多人点赞 2019-09-02 22:47:24
    老实说,自己的编程技能差的还太多,完成这个实验竟用了足足3个小时,包括构思、编辑、调试、修改、再调试…… 不过,总算调通了,可以进行下一章的学习了。 assume cs:codesg data segment db '1975','1976','...
  • 实验一 MASM for Windows 环境下的汇编语言编程环境使用 1. 实验目的 1) 掌握MASM for Windows 环境下的汇编语言编程环境使用; 2) 掌握汇编语言程序设计的基本流程; 3) 掌握8086/8088基本指令的使用方法和...
  • 汇编语言 王爽 实验七 独立完成 汇编语言 王爽 实验七 独立完成
  • 实验内容: 将内存单元存储的字节数据的16进制数的低位输出到显示器并显示。 实验要求: (1)运行程序后,屏幕...(2)进行反汇编; (3)显示内存中存储的数据; (4)比较单步运行过程中“T”和“P”命令的区别
  • 王爽汇编语言第三版-实验7(寻址方式在结构化数据访问中的应用) 相信大家在学习到这一定会对此(实验7)感到无从下手,这就对了毕竟作者都说难,那能不难吗? 下面我将放出我的代码,我相信是全球首份.因为没人能像我一样写...
  • 实验报告:利用冒泡法排序算法,将内存单元存储的数35H,78H,25H,13H,8H,D2H由小到大进行排序
  • 实验内容:从键盘键入一个大写英文字母,存放到内存单元BUF1中,再转化为对应的小写字母,存放到内存单元BUF2中。 要求:(1)显示程序运行前后内存单元BUF1、BUF2中存储的数据; (2)显示程序运行前和运行后各...
  • 汇编语言实验报告
  • 实验七——《寻址方式在结构化数据访问中的应用 》 这个实验对于初学而言确实比较复杂,用到了前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版,含完整实现代码。 合肥工业大学汇编语言上机实验报告(全,完成版)2019版,含...
  • 东北大学汇编语言实验报告(全部)东北大学汇编语言实验报告(全部)满分版
  • 王爽汇编语言实验7实现代码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,664
精华内容 15,865
关键字:

汇编语言实验七