suyunzzz 发表于 2017-11-19 14:58:07

关于int 21h中功能号为09h的输出支付串

本帖最后由 suyunzzz 于 2017-11-19 15:01 编辑

data segment

buffersize db 40
realsize db ?
buffer db 50 dup(?)
db 0ah
db '$'

note db 'pease input 20 number:','$'
result db 'min=','$'
                                 
min db 2 dup(?)
db 0dh
db '$'

data ends
code segment

assume cs:code,ds:data
start:lea di,min
   lea si,buffer

      mov ax,data
      mov ds,ax
      lea dx,note
      mov ah,09h
      int 21h          ;输出提示pease input 20 number:
   
   
      lea dx,buffersize   ;输入数值
      mov ah,0ah
      int 21h
      
      lea dx,buffer   ;   显示输入的10个数
      mov ah,09h
      int 21h
      
      mov al,
      mov ah,
      sub ax,3030h   ;非压缩bcd码
      aad               ;对应的16进制数
      mov bl,al
      clc
      mov cx,9
s:    mov al,
      mov ah,
      sub ax,3030h       ;非压缩bcd码
      aad            ;对应的16进制数
      cmp bl,al
      jna no            ;bl<=al时 不改变bl
      mov bl,al      ;al是最小的
      add si,3;下一个和bl比较
      loop s
      jmp done         
no:   add si,3
      loop s
done:mov al,bl         ;16进制数变为非压缩bcd码然后变成ascii码
      aam
      or ax,3030h
      mov ,ah          ;送至显示单元min
      mov ,al
      
      lea dx,result         ;显示提示min=
      mov ah,09h
      int 21h
      
      lea dx,min            ;显示最小值
      mov ah,09h
      int 21h

      mov ax,4c00h
      int 21h
code ends
end start
以上为代码为啥我输出的时候会出现这种前面的无法显示的问题
谢谢各位大佬

suyunzzz 发表于 2017-11-19 15:02:39

有大神指点一下没 还有我的代码 感觉这个方法好笨==
页: [1]
查看完整版本: 关于int 21h中功能号为09h的输出支付串