分析一个没输出的程序
*/ --------------------------------------------------------------------------------------*/ 出自: 编程中国 http://www.bccn.net
*/ 作者: zklhp E-mail:zklhp@sina.com QQ:493165744
*/ 时间: 2008-7-5 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------
昨天在论坛上看到一个试题:
设计一个加法程序,将从BUF存储单元开始的100个无符号数(16位)相加,结果存入BUF单元。
因为感觉简单 就顺手写了个程序想贴上去 又不放心 怕自己写错了(偶也是大菜鸟 [tk01] ) 就随便添个
buf dw 100d dup [color=Red]('1')[/color]
想运行运行试试 可啥也没输出就退出了…………
开始 偶以为自己的算法有错 程序不对 就换种写法 可换了几种 还是啥都没有 why?
想了半天还是没想出个所以然 就请出debug
[attach]36048[/attach]
原来如此 '1' 是 49d 4900d是1324h 在小尾模式里正好是 24 13 就是说开始就有个 $ 那还能输出什么!!!
到这里大家都看明白了 原来怎么简单… 可这个 $ 浪费了十几分钟呀
呵呵 本文内容很简单 主要是告诉大家:别以为没输出程序就有错
[[it] 本帖最后由 zklhp 于 2008-8-6 13:54 编辑 [/it]]
把那几个程序也贴出来 算个补充吧
.model small
.stack 200h
.data
buf dw 100d dup (1)
.CODE
START:
mov ax,@data
mov ds,ax
xor ax,ax
xor bx,bx
mov cx,100d
@@:
add ax,[buf+bx]
inc bx
inc bx
dec cx
jcxz @finish
jmp @b
@finish:
mov WORD ptr [buf],ax
mov BYTE ptr [buf+2],'$'
lea dx,buf
mov ah,9h
int 21h
;暂停,任意键关闭
mov ah,1
int 21h
mov ah,4ch ;结束,可以修改al设置返回码
int 21h
END START
.model small
.stack 200h
.data
buf dw 100d dup (1)
.CODE
START:
mov ax,@data
mov ds,ax
xor ax,ax
xor bx,bx
mov cx,100d
@loop:
add ax,[buf+bx]
inc bx
inc bx
loop @loop
mov WORD ptr [buf],ax
mov BYTE ptr [buf+2],'$'
lea dx,buf
mov ah,9h
int 21h
;暂停,任意键关闭
mov ah,1
int 21h
mov ah,4ch ;结束,可以修改al设置返回码
int 21h
END START
.model small
.stack 200h
.data
buf dw 100d dup (1)
.CODE
START:
mov ax,@data
mov ds,ax
xor ax,ax
xor bx,bx
mov cx,100d
lea si,buf
@loop:
lodsw
add bx,ax
loop @loop
mov WORD ptr [buf],bx
mov BYTE ptr [buf+2],'$'
lea dx,buf
mov ah,9h
int 21h
;暂停,任意键关闭
mov ah,1
int 21h
mov ah,4ch ;结束,可以修改al设置返回码
int 21h
END START
页:
[1]
