PACKED PACKED TO UNPACKED UNPACKED BCD
data segment bcdip db 56h ubcdop dw 0 data ends code segment assume cs:code,ds:data cs:code,ds:data start: mov ax,data mov ds,ax xor ax,ax mov al, bcdip mov dl,al and al,0f0h mov cl,4 ror al,cl mov bh,al and dl,0fh mov bl,dl mov ubcdop,bx mov ah,4ch int 21h code ends
BCD to ASCII
data segment bcdip db 56h ubcdop dw 0 data ends code segment assume cs:code,ds:data cs:code,ds:data start: mov ax,data mov ds,ax xor ax,ax mov al, bcdip mov dl,al and al,0f0h mov cl,4 ror al,cl mov bh,al
and dl,0fh mov bl,dl mov ubcdop,bx add bx,3030h mov ah,4ch int 21h
Ascending data segment org 2000h list1 db 23h,34h x ,98h,25h,20h,21h count equ 06h data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov bx,count1 l1: mov si,o!!set list1 mov cx,bx l2: mov al,"si# cm$ al,"si%1# &c l3 xchg al,"si%1# xchg "si#,al l3: inc si loo$ l2 dec bx &n' l1 mov ah,4ch int 21h code ends end start
Descending data segment org 2000h list1 db 23h,34h,98h,25h,20h,21h count equ 06h data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax
mov bx,count1 l1: mov si,o!!set list1 mov cx,bx l2: mov al,"si# cm$ al,"si%1# &nc l3 xchg al,"si%1# xchg "si#,al l3: inc si loo$ l2 dec bx &n' l1 mov ah,4ch int 21h code ends end start
Smallest data segment list db 52h,23h,56h,04h count equ 04h org 2000h smallest db ( data ends assume cs:code,ds:data code segment start: mov ax,data mov ds,ax mov si,o!!set list mov cx,0000h mov cl,count mov al,"si# again: cm$ al,"si# &c next mov al,"si# next: inc si loo$ again mov si,o!!set smallest mov "si#,al mov ah,4ch int 21h code ends end start
Largest data segment list db 52h,23h,56h,04h
count equ 04h org 2000h smallest db ( data ends assume cs:code,ds:data code segment start: mov ax,data mov ds,ax mov si,o!!set list mov cx,0000h mov cl,count mov al,"si# again: cm$ al,"si# &nc next mov al,"si# next: inc si loo$ again mov si,o!!set smallest mov "si#,al mov ah,4ch int 21h code ends end start