56.asm

来自「汇编语言课后习题答案」· 汇编 代码 · 共 68 行

ASM
68
字号
;56.asm

datasg   segment
  m      db  1,2,3,4,5,6,7,8,9,0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10
  p      db  20 dup(?)
  countp db  'positive data:',?,?,13,10,'$'
  n      db  20 dup(?)
  countn db  'negative data:',?,?,13,10,'$'
datasg   ends

codesg   segment
         assume  cs:codesg,ds:datasg
main     proc    far
start:
         push ds
         sub  ax,ax
         push ax

         mov  ax,datasg
         mov  ds,ax

         mov cx,20
         mov bx,0
         mov si,bx
         mov di,bx

loop1:   cmp m[bx],0
         jg  positive
         jl  negative
         jmp short next

positive:mov al,m[bx]
         mov p[si],al
         inc si
         jmp short next

negative:mov al,m[bx]
         mov n[di],al
         inc di

next:    inc bx
         loop loop1

         mov bl,10d
         mov ax,si
         div bl
         add ax,3030h
         mov [countp+14],al
         mov [countp+15],ah

         mov ax,di
         div bl
         add ax,3030h
         mov [countn+14],al
         mov [countn+15],ah

         lea dx,countp
         mov ah,09
         int 21h

         lea dx,countn
         mov ah,09
         int 21h
         ret
main     endp
codesg   ends
         end  start

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?