从键盘上接受两个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:
mov e, al
;***********enter f
mov ah, 1
int 21h
mov ah, 'a'
cmp ah, al
jna Fun8
jnc Fun9
Fun8:sub al, 57h
jnc NEXT5
Fun9:sub al, 30h
NEXT5:
mov f, al
;***********enter g
mov ah, 1
int 21h
mov ah, 'a'
cmp ah, al
jna Fun10
jnc Fun11
Fun10:sub al, 57h
jnc NEXT6
Fun11:sub al, 30h
NEXT6:
mov g, al
;***********enter h
mov ah, 1
int 21h
mov ah, 'a'
cmp ah, al
jna Fun12
jnc Fun13
Fun12:sub al, 57h
jnc NEXT7
Fun13:sub al, 30h
NEXT7:
mov h, al
;**********the newline
mov dl, offset newline
mov ah, 9
int 21h
;******xor function
mov al, a
mov bl, e
xor al, bl
mov m, al
mov bl, 2
;****enhance the ah
mov ah, 0
div bl
mov i, ah
;****can use the for
mov ah, 0
div bl
mov j, ah
mov ah, 0
div bl
mov k, ah
mov l, al
;pirnt (a xor e) the binary
mov dl, l
add dl, 30h
mov ah, 2
int 21h
mov dl, k
add dl, 30h
mov ah, 2
int 21h
mov dl, j
add dl, 30h
mov ah, 2
int 21h
mov dl, i
add dl, 30h
mov ah, 2
int 21h
;******xor function
mov al, b
mov bl, f
xor al, bl
mov n, al
mov bl, 2
;****enhance the ah
mov ah, 0
div bl
mov i, ah
;****can use the for
mov ah, 0
div bl
mov j, ah
mov ah, 0
div bl
mov k, ah
mov l, al
;pirnt (a xor e) the binary
mov dl, l
add dl, 30h
mov ah, 2
int 21h
mov dl, k
add dl, 30h
mov ah, 2
int 21h
mov dl, j
add dl, 30h
mov ah, 2
int 21h
mov dl, i
add dl, 30h
mov ah, 2
int 21h
;******xor function
mov al, c
mov bl, g
xor al, bl
mov o, al
mov bl, 2
;****enhance the ah
mov ah, 0
div bl
mov i, ah
;****can use the for
mov ah, 0
div bl
mov j, ah
mov ah, 0
div bl
mov k, ah
mov l, al
;pirnt (a xor e) the binary
mov dl, l
add dl, 30h
mov ah, 2
int 21h
mov dl, k
add dl, 30h
mov ah, 2
int 21h
mov dl, j
add dl, 30h
mov ah, 2
int 21h
mov dl, i
add dl, 30h
mov ah, 2
int 21h
;******xor function
mov al, d
mov bl, h
xor al, bl
mov p, al
mov bl, 2
;****enhance the ah
mov ah, 0
div bl
mov i, ah
;****can use the for
mov ah, 0
div bl
mov j, ah
mov ah, 0
div bl
mov k, ah
mov l, al
;pirnt (a xor e) the binary
mov dl, l
add dl, 30h
mov ah, 2
int 21h
mov dl, k
add dl, 30h
mov ah, 2
int 21h
mov dl, j
add dl, 30h
mov ah, 2
int 21h
mov dl, i
add dl, 30h
mov ah, 2
int 21h
;**************newline
mov dl, offset newline
mov ah, 9
int 21h
;print the 0X result 'pnom'
mov al, p
mov ah, 10
cmp ah, al
jna Func0
jnc Func1
Func0:add al, 57h
jnc NEXTC0
Func1:add al, 30h
NEXTC0:mov dl, al
mov ah, 2
int 21h
mov al, n
mov ah, 10
cmp ah, al
jna Func2
jnc Func3
Func2:add al, 57h
jnc NEXTC1
Func3:add al, 30h
NEXTC1:mov dl, al
mov ah, 2
int 21h
mov al, o
mov ah, 10
cmp ah, al
jna Func4
jnc Func5
Func4:add al, 57h
jnc NEXTC2
Func5:add al, 30h
NEXTC2:mov dl, al
mov ah, 2
int 21h
mov al, m
mov ah, 10
cmp ah, al
jna Func6
jnc Func7
Func6:add al, 57h
jnc NEXTC3
Func7:add al, 30h
NEXTC3:mov dl, al
mov ah, 2
int 21h
;*******move to dos
mov ah, 4ch
int 21h
code ends
end start