NZGMTCAH 2020-04-02 15:44 采纳率: 50%
浏览 734
已采纳

萌新求救,汇编语言真的是噩梦

微机原理 – 作业4(程序设计)

要求:用EMU8086平台编程并调试。给出程序源代码,并附截图展示程序运行结果。
1.在以DAT1为首址的内存中存放着多个8位有符号数,以“*”结尾,要求计算出其中所有正数的平均值,并将其存在DAT2中。

2.设内存单元A、B、C 中分别存放着三个8位有符号数,试根据公式X= 5A+7B-6C计算X的值, 将X值存入XMU单元。

3.编程求8个非压缩BCD数的平均值。

4.将BUF1中的带符号字节数X,与BUF2中的带符号字节数Y,按下式计算Z=|X-Y|,将结果Z存入RESULT中。

5.设数据段中有两个各有10个字节元素的无符号数组DA1和DA2。试编制程序,统计DA1中大于、等于、小于DA2对应元素的个数。

6.有数组 X(X1,X2,……,X10) 和 Y(Y1,Y2,……,Y10),编制程序段计算:
Z1 = X1 + Y1
Z2 = X2 + Y2
Z3 = X3 - Y3
Z4 = X4 - Y4
Z5 = X5 - Y5
Z6 = X6 + Y6
Z7 = X7 - Y7
Z8 = X8 - Y8
Z9 = X9 + Y9
Z10= X10 + Y10
结果存入Z数组。(X、Y、Z均为字变量)

  • 写回答

2条回答 默认 最新

  • M宝可梦 2020-04-05 09:17
    关注

    1.

    data segment
      dat1 db 10h,20h,81h,'*'
      dat2 db 0
    data ends
    
    
    code segment
        assume cs:code,ds:data
    start:
        mov ax,data
        mov ds,ax
        xor ax,ax
        xor bx,bx 
        xor dx,dx
        lea si,dat1
      cycle:
        cmp [si],'*'
        jz next
        add [si],0  
        js fu
        inc ah
        add dl,[si]
        adc dh,0
      fu:
        inc si   
        loop cycle    
       next:
        mov bl,ah
        mov ax,dx
        idiv bl
        mov dat2,al     
    
        mov ax, 4c00h 
        int 21h    
    ends
    
    end start
    

    2.

    data segment
      a db 2
      b db 3
      c db 4
      xmu dw 0
    data ends
    code segment
        assume cs:code,ds:data
    start:
       mov ax,data
       mov ds,ax
       xor ax,ax
       xor bx,bx
       mov al,a
       mov bl,5
       imul bl
       mov xmu,ax
       mov al,b
       mov bl,7
       imul bl
       adc xmu,ax
       mov al,c
       mov bl,6
       imul bl
       sbb xmu,ax
    
        mov ax, 4c00h 
        int 21h    
    ends
    
    end start
    

    3.

    data segment
      x db 1h,2h,3h,1h,2h,3h,1h,2h
      x_ dw 0
    data ends
    
    code segment
        assume cs:code,ds:data
    start:
       mov ax,data
       mov ds,ax
       xor ax,ax
       xor bx,bx 
       xor cx,cx
       mov si,offset x
       mov cx,8
     cycle:
       mov bl,[si]
       add al,bl
       adc ah,0
       inc si
       loop cycle
       mov bl,8h
       idiv bl
       xor ah,ah
       add al,0
       aaa
       mov x_,ax
    
    
    
        mov ax, 4c00h 
        int 21h    
    ends
    
    end start
    

    4.

    data segment 
      buf1 db 1h
      buf2 db 4h
      result dw 0
    data ends
    
    code segment
        assume cs:code,ds:data
    start:
       mov ax,data
       mov ds,ax
       xor ax,ax
       xor bx,bx
       mov al,buf1
       mov bl,buf2
       cmp al,bl 
       clc
       jl jump
       sbb al,bl
       jmp to
     jump:
       clc
       sbb bl,al
       mov ax,bx
       to:
       mov result,ax
    
    
        mov ax, 4c00h 
        int 21h    
    ends
    
    end start
    

    5.

    data segment
      da1 db 1h,2h,1h,30h,6h,8h,11h,20h,70h,10h
      da2 db 1h,2h,1h,50h,7h,9h,22h,10h,50h,9h
      above db 0
      equal db 0
      below db 0 
    data ends
    
    
    code segment
        assume cs:code,ds:data
    start:
        mov ax,data
        mov ds,ax
        xor ax,ax
        xor bx,bx
        xor cx,cx
        xor dx,dx
        lea si,da1
        lea di,da2
        mov cx,10   
        cld
      cycle: 
        mov al,[si]
        mov bl,[di] 
        cmp al,bl
        ja ab
        je eq  
        inc below 
        jmp jump   
        ab:inc above  
        jmp jump
        eq:inc equal
        jmp jump   
       jump:
        inc si
        inc di
    
        loop cycle  
    
        mov ax, 4c00h 
        int 21h    
    ends
    
    end start
    

    6.

    data segment
       x dw 2h,2h,2h,2h,2h,2h,2h,2h,2h,2h
       y dw 2h,2h,2h,2h,2h,2h,2h,2h,2h,2h
       z dw 10 dup(0)
    ruler dw 0c4c0h
    z_ad dw 0   
    data ends
    
    code segment
        assume cs:code,ds:data
    start:
       mov ax,data
       mov ds,ax
       xor ax,ax
       xor bx,bx 
       lea si,x
       lea di,y 
       mov dx,ruler
       mov cx,10
     cycle:
       mov ax,[si]
       mov bx,[di]
       shl dx,1
       jnc _              
       add ax,bx
       lea si,z
       add si,z_ad
       mov [si],ax 
       jmp jump  
      _:
       sub ax,bx
       lea si,z
       add si,z_ad 
       mov [si],ax       
     jump: 
       lea si,x
       add si,z_ad   
       add si,2
       add di,2
       add z_ad,2
       loop cycle  
    
        mov ax, 4c00h 
        int 21h    
    ends
    
    end start
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格