. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  dec ax 与 sub ax,1的区别  [已解决] 回复[ 4次 ]   点击[ 408次 ]  
aler
[帖 主]   [ 发表时间:2009-04-24 11:31 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:18
注册日期:2008-03-14 14:07
assume cs:code
stack segment
  db 128 dup (0)
stack ends
data segment
  dw 0,0
data ends
code segment
start:mov ax,data  
      mov ds,ax  
      mov ax,stack  
      mov ss,ax  
      mov sp,128  
      mov ax,0  
      mov es,ax  
        

      mov ax,0b800h  
      mov es,ax  
      mov ah,'a'  
 show:mov es:[160*12+40*2],ah  
      call delay  
      inc ah  
      cmp ah,'z'  
      jna show  
      mov ax,0  
      mov es,ax  
      push ds:[0]  
      push es:[9*4]  
      push ds:[2]  
      pop es:[9*4+2]  
        

mov ax,4c00h  
int 21h  

delay:push ax  
      push dx  
      mov dx,1000h  
      mov ax,0  
      
   m:sub ax,1         ;如果将此处换成dec ax,程序不可用,大家试。                                     
                
      sbb dx,0  
      cmp ax,0  
      jne m  
      cmp dx,0  
      jne m  
      pop dx  
      pop ax  
      ret  

code ends  
end start
long361800
[第1楼]   [ 回复时间:2009-04-25 21:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-04-24 22:40
当然了,变了啊!!
nanlingcg
[第2楼]   [ 回复时间:2009-04-26 18:38 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2009-03-15 00:31
sub ax,1会改变CF,dec ax不改变CF,所以DX的值一直是1000H,就在输出‘a'后无限地循环下去...
aler
[第3楼]   [ 回复时间:2009-04-27 17:08 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:18
注册日期:2008-03-14 14:07
sub ax,1会改变CF,dec ax不改变CF,所以DX的值一直是1000H,就在输出‘a'后无限地循环下去...
------------------
回复:ths nanlingcg
aler
[第4楼]   [ 回复时间:2009-04-27 17:09 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:18
注册日期:2008-03-14 14:07
此贴由 贴主 于 [ 2009-04-27 17:09 ] 结贴。 结贴原因:问题已解决
得分情况: 2楼(nanlingcg):6分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved