在随堂的测验中,为学生出了一道编程题,题目中的一部分要求将一个字中的高低字节互换。
出题后,我试做参考解答,给出的解法是:
mov ax, [bx]
mov bl, al
mov al, ah
mov ah, bl
mov [bx], ax
其中bx指向这一个字。
随后阅卷,惊喜地发现同学们的其他解法,有些看懂了妙不可言。
下面分享众人的智慧,同学们是汇编语言的初学者,但创造性还是非同一般。
下面的4种写法,各有千秋:
(1)
mov ah, [bx]
mov al, [bx+1]
mov [bx], al
mov [bx+1], ah
(2)
mov ax, [bx]
mov [bx], ah
mov [bx+1], al
(3)
mov al, [bx+1]
mov ah, [bx]
mov [bx], ax
(4)
mov ax, [bx]
mov al, ah
mov [bx+1], al
(5)有点烦,但也对
mov ah, [bx]
inc bx
mov al, [bx]
inc bx
mov [bx-2], ax
(6)下面的想法不错,但的确错误了
mov dx, [bx]
push dl ;栈操作只针对字
push dh
pop dl
pop dh