assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
dw 0
start:
mov ax,cs
mov ss,ax
mov sp,12h
mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s:
push [bx]
pop cs:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
书中定义了5个字单元用做栈空间,我觉得没必要,而且还引我走上歧路,看到这个题目时,我就一直在思考,5个字单元怎么能交换8个数据呢,经过多次的DUBEG调试才发现,其实程序只用到一个字单元,其他的都不需要的,因为push每次入栈后就由pop出栈了,SS不变,SP变两次,先减后加也等于没变,所以我觉得应该改为我上面的程序可能更好点
- [masmaster] 才发现, 这是前辈的blog呀~~ 07/26 15:53
- [masmaster] 个人认为用逻辑与或操作要比用算术运算的add/sub操作要简单高效。而且看着更‘职业’~呵呵 07/26 15:52
- [avalon] 想说一句,这个规律在很久以前的编程书上就有看到了哦:) 07/26 14:49
- [kyolxs] 哈哈 07/23 13:09
- [kyolxs] 字单元 当初也是被这三个字恶心了。。 07/23 13:09
- [breakan] 嗯,ascii当初设计时就是这样考虑的。 10/08 19:40
- [till] 谢谢学兄们的鼓励 呵呵~ 10/06 18:52
- [游客] 路过,,,博主继续,,,加油,,, 10/06 18:24
- [游客] 针对问题,解决问题! 10/06 12:09
- [till] 呵呵~ musicvs兄说的很对啊 想到西游记中一句话:冥冥自有定数!这就是一个定数 ! 10/06 11:53