当前位置: 代码迷 >> 汇编语言 >> 汇编 crt 显示有关问题求教
  详细解决方案

汇编 crt 显示有关问题求教

热度:673   发布时间:2016-05-02 04:54:16.0
汇编 crt 显示问题求教
题目要求判断n的数的奇偶性,把奇数放在一个数组,偶数放在一个数组,分别求个数,并在crt上显示出来,但是我不懂子程序show为什么这么写。与mov dl,al  
                                  mov ah,2h  
                                  int 21h 有什么不同???
data segment
dat  dw  1,2,3,4,5,6,7,8
n    equ ($-dat)/2
p    dw  n dup(?)
m    dw  n dup(?)
pc   dw  ?
mc   dw  ?
data ends
code segment
  assume cs:code,ds:data
main proc far
     mov  ax,data
     mov  ds,ax
     call panduan
     mov  ax,pc
     call crt
     call clrf
     mov  ax,mc
     call crt
     mov  ah,4ch
     int  21h
main endp
panduan proc near
     mov  ax,0
     mov  bx,0
     mov  si,0
     mov  cx,n
lop: test dat[si],1b     ;最后一位是否是1
     jnz  fm
     mov  bx,dat[si]
     push si
     mov  si,pc
     inc  pc
     mov  p[si],bx

     pop  si
     jmp  f1
fm:  mov  bx,dat[si]
     push si
     mov  si,mc
     inc  mc
     mov  m[si],bx

     pop  si
f1:  add  si,2
     dec  cx
     cmp  cx,0
     jnz  lop
     ret
panduan endp
show proc near
     xor  bx,bx
     xor  cx,cx
     mov  bx,10
f2:  xor  dx,dx
     div  bx
     or   dx,0e30h
     inc  cx
     push dx
     cmp  ax,0
     jnz  f2
f3:  pop  ax
     int  10h
     loop f3
     ret
show endp
额。。。偶刚学汇编不久,好多不懂,嘿嘿大神们教教吧,呵呵

------解决方案--------------------
你说的是 dos 的字符输出功能调用,这个代码里用的是 bios 的字符输出功能调用(AH=0eh)。一般是建议尽可能地使用 dos 的,因为其功能适应性上更好些,比如支持输出转向等。
  相关解决方案