QQ网名大全

汇编语言:把长度为n的字数组table中的负数取绝对值,并统计负数的个数存放入count中(将负数

code  segment
      assume cs:code
      org 100h
start: jmp bbb
table dw 123,345,456,567,678,789,-987,-876,-765,-654,-543,-432,-321,0
n     dw 14
count dw ?
bbb:
      push cs
      pop ds
      push cs
      pop es
      mov cx,[n]
      lea bx,table
      mov word ptr[count],0
lp:   cmp word ptr[bx],0
      jge n1
      inc word ptr [count]
      mov ax,[bx]
      neg ax
      push bx
      push cx
      call dispnum
      pop cx
      pop bx
n1:   inc bx
      inc bx
      loop lp
      mov ax,[count]
      call dispnum
      int 20h


;  显示十进制整型数值子程序
dispnum proc near
    ;   将要显示的数据放入AX中
    mov dx,0
    mov bx,10
    div bx
    mov byte ptr[y+6],dl  ;保存个位
    mov dx,0
    div bx
    mov byte ptr[y+5],dl  ;保存十位
    mov dx,0
    div bx
    mov byte ptr[y+4],dl  ;保存百位
    mov dx,0
    div bx
    mov byte ptr[y+3],dl  ;保存千位
    mov byte ptr[y+2],al  ;保存万位
    mov al,byte ptr[y+2]
    add al,30h            ;万位转ASC2
    mov byte ptr[y+2],al
    mov al,byte ptr[y+3]
    add al,30h            ;千位转ASC2
    mov byte ptr[y+3],al
    mov al,byte ptr[y+4]
    add al,30h            ;百位转ASC2
    mov byte ptr[y+4],al
    mov al,byte ptr[y+5]
    add al,30h            ;十位转ASC2
    mov byte ptr[y+5],al
    mov al,byte ptr[y+6]
    add al,30h            ;个位转ASC2
    mov byte ptr[y+6],al
    mov di,1
disp1:
    inc di
    cmp di,6
    je dispexit
    cmp byte ptr[y+di],'0'
    jne dispexit
    mov byte ptr[y+di],' '
    jmp disp1
dispexit:
    mov ah,9
    lea dx,y
    int 21h
    ret
y   db 10,13,0,0,0,0,0,'$'
dispnum endp

code  ends
      end start

(1)将每个数和0比较,统计负数;

(2)对负数用求补(neg)指令得到其绝对值;

(3)写一个子程序显示正数(用10进制)

佚名
2024-06-16 03:02:30
最佳回答
类似问题(10)