• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >汇编语言 > 汇编源码系列之sertype

汇编源码系列之sertype

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2017-06-28

匿名通过本文主要向大家介绍了汇编源码,易语言反汇编源码,win7用远程汇编源码,反汇编源码,易语言汇编源码等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
</div>

这个都是过去DOS时代的汇编源码,虽然已经过去了,但是对于学习汇编还是有帮助的,汇编语言只是程序员一门基础语言,大多人掌握即可,不一定要深入研究.......

comment *
  SERTYPE.ASM
  Purpose:
  Determines the type of UART in each serial port
  Author:
  Douglas Boling, in PcMag. With some modifications by Yousuf Khan.
*
dosseg
bdseg  segment at 40h ;bios data segment
    com1  dw   ?
    com2  dw   ?
    com3  dw   ?
    com4  dw   ?
    ends
_data  segment para 'data'
    uart1  db   0
    uart2  db   0
    uart3  db   0
    uart4  db   0
    portmsg db   "COMx: $"
    x8250  db   "NS 8250 (non-FIFO)",13,10,"$"
    x16450 db   "NS 8250A/16450/16550 (non-FIFO)",13,10,"$"
    xfifo  db   "NS 16550A/Intel 82510 (FIFO)",13,10,"$"
    xdma  db   "IBM type 3 (FIFO/DMA)",13,10,"$"
    pas_de_ports  db   "No serial ports detected",13,10,"$"
    ends
_stack segment para stack 'stack'
    db   200h dup (?)
    ends
cseg  segment para 'code'
    mov   ax, bdseg
    mov   es, ax     ;ES := Bdseg
    mov   ax, _data
    mov   ds, ax     ;DS := _data
    assume cs:cseg, ds:_data, es:bdseg, ss:_stack
    xor   al, al     ;# of serial ports = 0
    mov   dx, [com1]
    cmp   dx, 0
    je   eoproc
    inc   al       ;# of serial ports = 1
    push  ax
    call  uartdet
    mov   [uart1], al   ;remember the type of this UART
    pop   ax
    mov   dx, [com2]
    cmp   dx, 0
    je   eoproc
    inc   al       ;# of serial ports = 2
    push  ax
    call  uartdet
    mov   [uart2], al
    pop   ax
    mov   dx, [com3]
    cmp   dx, 0
    je   eoproc
    inc   al       ;# of serial ports = 3
    push  ax
    call  uartdet
    mov   [uart3], al
    pop   ax
    mov   dx, [com4]
    cmp   dx, 0
    je   eoproc
    inc   al       ;# of serial ports = 4
    push  ax
    call  uartdet
    mov   [uart4], al
    pop   ax
eoproc:
    call  disp
    mov   ah, 4ch
    int   21h
delay  macro
    jmp   $+2
    endm
uartdet proc  near
    push  bx
    push  cx
    mov   bx, dx     ;save starting i/o addr
    add   dx, 4      ;point to modem ctrl reg
    in   al, dx     ;disable interrupts
    push  ax
    and   al, 11111011b
    out   dx, al
    mov   ch, 0      ;assume type 0
    mov   dx, bx
    add   dx, 7      ;see if scratch reg exists
    mov   al, 55h
    cli
    out   dx, al     ;write to scratch reg
    delay
    in   al, dx     ;read back
    cmp   al, 55h
    jne   endudet
    mov   al, 0AAh
    out   dx, al     ;write to scratch reg
    delay
    in   al, dx     ;read back
    sti
    cmp   al, 0AAh
    jne   endudet
    inc   ch       ;assume type 1
    mov   dx, bx
    add   dx, 2      ;point to FIFO ctrl reg
    mov   al, 7      ;attempt to enable FIFOs
    cli
    out   dx, al
    delay
    in   al, dx     ;read interrupt ID reg
    sti
    and   al, 0c0h    ;strip all but FIFO bits
    jz   endudet     ;if bits 0, 16450/16550
    inc   ch       ;assume type 2
    mov   dx, bx
    add   dx, 8003h    ;point to enhanced reg 1
    cli
    in   al, dx
    push  ax
    or   al, 01000000b  ;enable DMA transmission
    out   dx, al
    push  dx
    mov   dx, bx
    add   dx, 2
    in   al, dx
    mov   cl, al
    pop   dx       ;restore enhanced reg 1
    pop   ax
    out   dx, al
    sti
    and   cl, 0c0h    ;again mask all but FIFO ID
    cmp   cl, 40h
    jne   endudet     ;must be type 2 (FIFO)
    inc   ch       ;must be type 3 (DMA)
endudet:
    pop   ax
    mov   dx, bx
    add   dx, 4      ;point to modem ctrl reg
    out   dx, al     ;restore initial condition
    xor   ax, ax
    mov   al, ch
    mov   dx, bx
    pop   cx
    pop   bx
    ret
uartdet endp
disp  proc  near
    push  ax   ;save AX
    cmp   al, 0  ;no serial ports?
    je   noports
    mov   bx, offset ds:[uart1]  ;offset of UART type field
    mov   di, offset ds:[portmsg][3] ;offset of 4th char in message
    mov   cx, 0
    mov   cl, al ;number of iterations
@l1:
    ;
    ;write "COMx: " message substituting "x" for proper comport #
    ;
    mov   dl, 4
    sub   dl, cl
    add   dl, 30h ;convert to ASCII number
    mov   [di], dl
    lea   dx, portmsg
    mov   ah, 9
    int   21h
    ;
    ;write the UART type now
    ;
    mov   dl, [bx]
    cmp   dl, 0
    jne   @t2
    lea   dx, x8250
    mov   ah, 9
    int   21h
    jmp   @eot
@t2:  cmp   dl, 1
    jne   @t3
    lea   dx, x16450
    mov   ah, 9
    int   21h
    jmp   @eot
@t3:  cmp   dl, 2
    jne   @t4
    lea   dx, xfifo
    mov   ah, 9
    int   21h
    jmp   @eot
@t4:  lea   dx, xdma
    mov   ah, 9
    int   21h
@eot:  inc   bx
    loop  @l1
    jmp   eoproc2
noports:
    lea   dx, pas_de_ports
    mov   ah, 9
    int   21h
eoproc2:
    pop   ax
    ret
disp  endp
    ends
    end
; EOF SERTYPE.ASM

</div> </div> </div> </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 汇编源码系列之inthand
  • 汇编源码系列之cdcheck
  • 汇编源码系列之cldoc12
  • 汇编源码系列之basload
  • 汇编源码系列之basmain
  • 汇编源码系列之brk2
  • 汇编源码系列之cleanf
  • 汇编源码系列之charop
  • 汇编源码系列之sertype
  • 汇编源码系列之comint

相关文章

  • 2017-06-28汇编教程之超类化
  • 2017-06-17循环程序的设计
  • 2017-06-28专截320*200的截画程序
  • 2017-06-28汇编源码系列之comint
  • 2017-06-17堆栈操作指令
  • 2017-06-28PE文件结构剖析
  • 2017-06-28制作动态链接库
  • 2017-06-28DOS6.0源程序中的硬盘引导记录源程序FDBOOT.ASM
  • 2017-06-28汇编语言的艺术-准备工作(五)
  • 2017-06-17汇编程序功能

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 汇编语言程序设计(三)
    • 如何分析未文档化的数据结构
    • 减运算指令
    • 外部设备
    • 80x86微处理器
    • 汇编教程:虚拟设备驱动程序结构
    • 如何使用DLL中的资源
    • 汇编源代码之简单密码输入
    • 汇编语言程序设计(五)
    • 汇编源码系列之sertype

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有