为什么要移它呢?
追答是要把每一个16进制位移到最低位,再通过与000FH相与将其取出,再将其值转为ASCii码
追问不移动它,直接and. al. 0f0或者f0切换高低位不行吗?
追答可以,这以后呢?还是要移动到最低位去。
code segment
assume cs:code
org 100h
start:
jmp bb
sr db 31H,32H,61H,41H,42H,03H,77H,81H,93H,55H
de db 1FH,20H,3DH,29H,2AH,03H,4DH,51H,5DH,37H
re db 10 dup(0)
; sr即source,re即result
; 你给出的比对结果存入de中,在程序的后半部分进行比对
; 程序在nasm中调试通过
x db 0
msg db 'equal',10,13,'$'
bb: push cs
pop ds
push cs
pop es
lea si,sr
lea di,re
mov cx,10
again1:
mov al,byte ptr[si]
mov x,al
rol x,4 ; 在masm中 应将本行变成4行 rol x,1
mov al,x
and al,0fh
mov ah,0
mov bl,10
mul bl
rol x,4 ; 在masm中 应将本行变成4行 rol x,1
mov bl,x
and bl,0fh
add al,bl
mov byte ptr[di],al
inc si
inc di
loop again1
mov cx,10
lea si,re
lea di,de
again2:
mov al,[si]
cmp al,[di]
jne again3
lea dx,msg
mov ah,9
int 21h
loop again2
again3:
mov ah,4ch
int 21h
code ends
end start
哦!这是10个bcd码数转16进制的程序,供参考。
为什么?
追答不为什么。
跟据你的需要转换,即可。
你需要左转,就左转,你需要...