qw58460 发表于 2015-12-7 22:13:35

自己写的角度检测,看有没有更好的方法求指点。

assume cs:code
code segment
   start:mov al,113
      call showsin
   mov ax,4c00h
   int 21h
   
showsin:jmp short show
       jiong db 'Input error, please re-enter',0
       baise db 0,30,60,90,120,150,180
       table dw ag0,ag30,ag60,ag90,ag120,ag150,ag180;字符串偏移地址表
    ag0   db '0',0                                  ;sin(0)对应的字符串'0'
    ag30db '0.5',0                               ;sin(30)对应的字符串'0.5'
    ag60db '0.866',0                           ;sin(60)对应的字符串'0.866'
    ag90db '1',0                                 ;sin(90)对应的字符串'1'
    ag120 db '0.866',0                            ;sin(120)对应的字符串'0.866'
    ag150 db '0.5',0                              ;sin(150)对应的字符串'0.5'
    ag180 db '0',0                              ;sin(180)对应的字符串'0'
   
show:push bx
       push es
    push si
    push ax
    push cx
   
    mov bx,0b800h
    mov es,bx
    mov si,52+12*160
    mov bx,0
    mov cx,7
b:cmp al,baise          ;进行判断看看角度值是否在集合中
    je f
    inc bx
    loop b
   
   
    mov bx,0
h:mov al,jiong
    cmp al,0
    je ok
          mov es:,al
          inc bx
          add si,2
          jmp short h
   
   
;一下用角度/30作为相对于table的偏移,取得对应的字符串的偏移地址,放在bx中   
   
f:mov bl,30
    div bl
    mov bl,al
    mov bh,0
    add bx,bx
    mov bx,table
   
;以下显示字符
         mov si,12*160+40*2
       d:mov al,cs:
      cmp al,0       ;比较是不是0
   je ok
   mov es:,al
   inc bx
   add si,2
   jmp short d
   
ok:pop cx
   pop ax
   pop si
pop es
pop bx
ret
code ends
end start   
页: [1]
查看完整版本: 自己写的角度检测,看有没有更好的方法求指点。