NZGMTCAH
NZGMTCAH
采纳率100%
2020-04-02 15:44

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

200
已采纳

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

  • weixin_46257458 M宝可梦 1年前

    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
    
    点赞 3 评论 复制链接分享
  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 1年前