data segment
bcd db 01h,23h,45h,67h,89h,13h,24h,35h,46h,57h ;bcd碼
asc db 20 dup(0) ;轉換之後存在這裏
data ends
code segment
start: mov ax,data
mov ds,ax
mov cx,10 ;循環次數
lea si,bcd ;si指向bcd碼
lea di,asc ;di指向轉換之後的目標位置
next: mov al,[si] ;取出bcd碼
mov dl,al ;放dl保存
and al,0fh ;去掉高4位,先處理低位的bccd碼
or al,30h ;轉換成ascii碼
mov [di],al ;存到目標位置
inc di ;修改目標地址指針
push cx ;要用到移位指令,需要cl寄存器,所以將循環次數進棧保存
mov cl,4 ;移動4位
shr dl,cl ;將原bcd碼的高位移到地4位上
or dl,30h ;轉換成ascii碼
mov [di],dl ;存入目標位置
inc di ;修改地址指針
inc si ;修改地址指針
pop cx ;循環次數出棧
loop next ;循環
mov ax,4c00h
int 21h
code ends
end start
木西?我喜歡這名字