+ -
当前位置:首页 → 问答吧 → 如何编制一个程序,在DA_WORD数据区中找出最大值、最小值,并且以十六进制显示出来?

如何编制一个程序,在DA_WORD数据区中找出最大值、最小值,并且以十六进制显示出来?

时间:2011-05-05

来源:互联网

如何编制一个程序,在DA_WORD数据区中找出最大值、最小值,并且以十六进制显示出来?

作者: blueshine1   发布时间: 2011-05-05

引用楼主 blueshine1 的回复:
如何编制一个程序,在DA_WORD数据区中找出最大值、最小值,并且以十六进制显示出来?


Assembly code
assume    cs:code,ds:data
data    segment
array    dw    1234h,01h,1223h,0h,0f99h;要测试的数据
max    dw    0                       ;初始化max
min    dw    0                       ;初始化min
m1    db    'Max=$'                 ;
m2    db    'Min=$'                 ;相关提示信息
data    ends
code    segment
start:
    mov ax,data
    mov ds,ax
    mov cx,lengthof array           ;获取数组个数
    mov bx,offset array             ;获取数组首地址
s:
    mov ax,[bx]                     ;开始遍历比较
    cmp ax,max                      ;
    jg da
    cmp ax,min
    jl xiao
    jmp jx
da:
    mov max,ax                       ;将大数存放到max单元
    jmp jx
xiao:
    mov min,ax                       ;将小鼠存放到min单元
jx:
    add bx,2                         ;指向下一个数据
    loop s

    mov dx,offset m1                 ;打印提示信息1
    mov ah,9    
    int 21h
    
    mov dx,max                       ;打印max
    call disphex                   

    call crlf                        ;换行

    mov dx,offset m2                 ;打印提示信息2
    mov ah,9
    int 21h

    mov dx,min                       ;打印min
    call disphex

    mov ah,4ch
    int 21h
;换行子程序
crlf    proc uses dx ax
    mov ah,2
    mov dl,13
    int 21h
    mov dl,10
    int 21h
    ret
crlf    endp
;显示十六进制子程序
disphex    proc uses dx
    mov cx,4
d1:    push cx
    mov cl,4
    rol dx,cl
    push dx
    and dx,0fh
    cmp dl,10
    jb d10
    add dl,37h
    mov ah,2
    int 21h
    jmp jx2
d10:    add dl,30h
    mov ah,2
    int 21h
jx2:    pop dx
    pop cx
    loop d1
    mov dl,'H'
    mov ah,2
    int 21h
    ret
disphex    endp
;
code    ends
end    start

作者: masmaster   发布时间: 2011-05-05