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

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

微机原理 – 作业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条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分