从键盘上接受两个4位十六进制数,在下一行以二进制形式输出两数的异或的结果。并将此二进制数的结果中的第3到第0与第15位到第12位对调,再以十六进制输出!
终于自己搞定了。论坛里问不出这样的程序啊!
data segment
newline db 0dh, 0ah, '$'
top1 db 'the first word(minuscule):', '$'
top2 db 'the second word(minuscule):', '$'
;the first word:abcd
a db ?
b db ?
c db ?
d db ?
;the second word:efgk
e db ?
f db ?
g db ?
h db ?
;the temp varivable
i db ?
j db ?
k db ?
l db ?
;save the xor result
m db ?
n db ?
o db ?
p db ?
data ends
code segment
assume cs:code, ds:data
start: mov ax , data
mov ds , ax
;**************top1
mov dx, offset top1
mov ah, 9
int 21h
;***********enter a
mov ah, 1
int 21h
mov ah, 'a'
cmp ah, al
jna fun0
jnc fun1
fun0:sub al, 57h
jnc next0
fun1:sub al, 30h
next0:mov a, al
;***********enter b
mov ah, 1
int 21h
mov ah, 'a'
cmp ah, al
jna fun2
jnc fun3
fun2:sub al, 57h
jnc next1
fun3:sub al, 30h
next1:mov b, al
;***********enter c
mov ah, 1
int 21h
mov ah, 'a'
cmp ah, al
jna fun14
jnc fun15
fun14:sub al, 57h
jnc next2
fun15:sub al, 30h
next2:
mov c, al
;***********enter d
mov ah, 1
int 21h
mov ah, 'a'
cmp ah, al
jna fun4
jnc fun5
fun4:sub al, 57h
jnc next3
fun5:sub al, 30h
next3:
mov d, al
;**************newline
mov dx, offset newline
mov ah, 9
int 21h
;**************top2
mov dx, offset top2
mov ah, 9
int 21h
;***********enter e
mov ah, 1
int 21h
mov ah, 'a'
cmp ah, al
jna fun6
jnc fun7
fun6:sub al, 57h
jnc next4
fun7:sub al, 30h
next4: