qq_39056485
???biu
采纳率100%
2017-11-25 11:23 阅读 1.1k
已采纳

汇编语言菜鸟,急求大神们解答,不胜感激

10

编写并运行一个汇编语言程序,要求在首地址为Table的数组中存放10个带符号数,编写程序统计正数、负数和零的个数,并分别存入Gcount、Lcount和Zcount单元

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    caozhy 从今以后生命中的每一秒都属于我爱的人 2017-11-25 15:49

    根据现在的问答规则,为了防止白白回答问题而被耍,所以只能是先采纳后回答。谢谢谅解。

    点赞 1 评论 复制链接分享
  • Debug_dodge Debug_dodge 2017-11-25 13:03

    讨厌伸手党
    这么简单的作业,请思考后,有不会的地方在上来提问

    点赞 2 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2017-11-29 16:04
     ;将有符号数分组并分行显示(数据绝对值小于100)
    data segment
        ARRAY dw 1,2,-1,3,4,-2,-3,4,5,-6  
        P_ARY dw 10 dup(20h)  ;正数
        N_ARY dw 10 dup(20h)  ;负数
        str1 db 'P_ARY = ' 
        p db 0,6 dup(20h)
        str2 db 'N_ARY = ' 
        n db 0,6 dup(20h),10,13,'$';用来存放负数个数
    data ends
    code segment
        assume cs:code,ds:data
    start:
        mov ax,data
        mov ds,ax
        mov bx,offset ARRAY
        mov si,offset P_ARY
        mov di,offset N_ARY
        mov cx,10
        s:
            mov ax,[bx]
            Test ah,10000000b  ;相当于与,但不保存结果
            jz s0         ;跳到正数处理
            not ax    ;负数处理,求反加1得绝对值
            inc ax
            call get10   ;得到可显示10进制ASCII码
            mov [di],ax
            add di,2
            add n,1
            jmp next
        s0: call get10  ;正数直接   
            mov [si],ax
            add si,2
            add p,1
        next:   add bx,2
        loop s
        ;显示
        mov si,offset P_ARY
        mov di,offset N_ARY
        mov ah,0eh    ;中断调用功能参数
        mov cx,0
        mov cl,P  
        s1:
            mov al,[si]
            cmp al,30h
            jz gw1     ;不显示零
            int 10h
        gw1:    inc si
            mov al,[si]
            int 10h
            inc si
            mov al,20h
            int 10h
        loop s1
        mov al,10
        int 10h
        mov al,13
        int 10h
        mov cl,n
        s2:
            mov al,'-'
            int 10h
            mov al,[di]
            cmp al,30h
            jz gw2     ;不显示零
            int 10h
        gw2:    inc di
            mov al,[di]
            int 10h
            inc di
            mov al,20h
            int 10h
        loop s2
        mov al,10
        int 10h
        mov al,13
        int 10h
    
        add n,30h
        add p,30h
        mov ah,09h
        mov dx,offset str1
        int 21h   
        mov ah,4ch
        int 21h    
     get10 proc
        aam  ;BCD码调整,会将 al扩展 十位放到ah中,个位放到al中
        or ax,3030h  ;将数字转化成ascii码
        xchg al,ah ;逆序以便于显示al中是高位,ah是低位
        ret
     get10 endp   
    code ends
    end start
    
    点赞 2 评论 复制链接分享

相关推荐