主题:这里有一道题
euc
[专家分:4310] 发布于 2006-01-09 19:39:00
cmp al, bl
jae next
xchl al, bl ;好象写错了,是交换指令
next: ……
这一段意思是"如果al < bl就交换",题目问不用转移指令怎么实现同样功能?我写了一个超长的,请问有没有简单的?
push cx
mov cl, bl
sub cl, al
pushf
mov ch, [sp]
popf
and ch, 1
dec ch
and cl, ch
add al, cl
sub bl, cl
;用汇编虽然老长,但写出来后感觉挺爽的~
回复列表 (共4个回复)
沙发
erping [专家分:3660] 发布于 2006-02-02 16:57:00
xchl al, bl ;好象写错了,是交换指令
应该是 xchg
mov ch, [sp] ; 不正确
///////////////////////////////////////////////
//下面是一个完整的程序,有些多,没有想到更好的办法
//交个朋友,好吗
.386
.model tiny
code segment use16
org 100H
main:
mov al, 1
mov bl, 2
push cx
mov cl, al
mov ch, bl
push cx
push cx
cmp al, bl
setc cl ;80386 指令
xor ch, ch
mov bx, sp
xchg si, cx
mov al, [bx + si]
inc si
mov bl, [bx + si]
mov si, cx
add sp, 4
pop cx
ret
code ends
end main
;asm: masm v6.14
;linker: turbo linker v3.01
板凳
euc [专家分:4310] 发布于 2006-02-02 17:28:00
好,交个朋友!多跟你学学汇编。
3 楼
erping [专家分:3660] 发布于 2006-02-02 17:59:00
好,要像你学习 c\c++[em5]
4 楼
erping [专家分:3660] 发布于 2006-02-03 13:35:00
//再贴一种“方法”
mov bh, al
push bx
cmp bh, bl
xchg bh, bl
setc bl
xor al, bh
xor bh, bh
add bx, sp
mov bl, [bx]
xor al, bl
add sp, 2
我来回复