. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->基础知识
主题 : :  为什么我用汇编写的程序会有很大的cpu占用率  [待解决] 回复[ 8次 ]   点击[ 1285次 ]  
hygf99
[帖 主] [ 发表时间:2009-12-22 23:10 ] 
荣誉值:0
信誉值:4
注册日期:2009-10-17 21:41
我的机器配置不算太低,但是用汇编写的一个hello world都会有百分百的cpu占有率,这是为什么呢?用c写不会这样。
hygf99
[第3楼] [ 回复时间:2010-01-08 23:27 ] 
荣誉值:0
信誉值:4
注册日期:2009-10-17 21:41
data  segment                     ;和hello world差不多的
      disp    db'good!'
      data    ends
code  segment
assume cs:code,ds:data
start:
      mov    ax,data
      mov    ds,ax
      mov    ax,0b800h
      mov    es,ax
      mov    al,disp[0]
      mov    es:[146h],al
      mov    byte ptr es:[147h],1eh
      mov    al,disp[1]
      mov    es:[148h],al
      mov    byte ptr es:[149h],1eh
      mov    al,disp[2]
      mov    es:[14ah],al
      mov    byte ptr es:[14bh],1eh
      mov    al,disp[3]
      mov    es:[14ch],al
      mov    byte ptr es:[14dh],1eh
      mov    al,disp[4]
      mov    es:[14eh],al
      mov    byte ptr es:[14fh],1eh
      mov    ah,00h
      int    16H
      mov    ah,4ch
      int    21h
code  ends
end   start

我试过了,如果用INT 16H,则在程序启动的时候,会有一小会的cpu高占用率;但是若换成了INT 21H,则完全不会出现上述情况。我知道INT 16H是BIOS中断,INT 21H是DOS中断;但是为什么用BIOS中断就会出现高cpu占用率呢?兼容问题?
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved