将AX以10进制显示出来
插你个值

汇编 10进制转16进制 冒泡排序

scturtle posted @ 2009年10月24日 06:16 in 各种实验 , 3547 阅读

最后一个汇编实验里用到的,这两个还是很有用的,于是贴上来

.model small
.stack 200h
.data
BUF  DB 255 DUP(?)
NUMBER DW ?
FLAG DB ?
LEN DB 5
CRLN DB 0AH,0DH,24H
TEMP DW 0,1,10,100,1000,10000
.CODE

NEWLINE macro
        LEA DX,CRLN
        mov ah,9
        int 21h
ENDM

START:
        mov ax,@data
        mov ds,ax

        MOV BUF,'-'
        MOV BUF+1,'5'
        MOV BUF+2,'3'
        MOV BUF+3,'3'
        MOV BUF+4,'4'
       
        XOR SI,SI ;第几个字符
        XOR BH,BH
        MOV BL,LEN ;bx 长度
        ADD BX,BX
        XOR CX,CX ;保存最后结果
        MOV DL,BUF[SI] ;检负
        CMP DL,'-'
        JNE OP
        MOV FLAG,1
        INC SI
        SUB BX,2
OP:
        MOV AX,TEMP[BX] ;保存基数
        XOR DH,DH
        MOV DL,BUF[SI] ;基数要乘的数码
        SUB DL,30H
        IMUL DX
        ADD CX,AX
        INC SI
        SUB BX,2
        JNZ OP

        MOV AL,FLAG
        CMP AL,0
        JE OP2
        NEG CX
OP2:
        MOV AX,CX
        CALL SHOWAXD
        MOV FLAG,0

        ;暂停,任意键关闭
        mov ah,1
        int 21h
        mov ah,4ch     ;结束,可以修改al设置返回码
        int 21h

SHOWAXD PROC NEAR USES AX BX CX DX SI
......
SHOWAXD ENDP

END START

 这个是冒泡的 有待改进

.model small
.stack 200h
.data
NUMBER DW 5,4,-3,2,1
COUNT  DW 5
CRLN DB 0AH,0DH,24H
.CODE
NEWLINE macro
        LEA DX,CRLN
        mov ah,9
        int 21h
ENDM
START:
        mov ax,@data
        mov ds,ax
       
;       MOV CX,COUNT
;       XOR SI,SI
;LP2:
;       MOV AX,NUMBER[SI]
;       CALL SHOWAXD
;       NEWLINE
;       ADD SI,2
;       CMP SI,10
;       JNE LP2
       
        mov CX,COUNT
LP:
        XOR SI,SI
        MOV DI,2
THEN:
        MOV AX,NUMBER[SI]
        MOV BX,NUMBER[DI]
        CMP AX,BX
        JNG NOTBIGGER
        MOV NUMBER[SI],BX
        MOV NUMBER[DI],AX
NOTBIGGER:
        ADD SI,2
        ADD DI,2
        MOV AX,CX
        ADD AX,AX
        CMP DI,AX
        JL THEN
        LOOP LP

        MOV CX,COUNT
        XOR SI,SI
LP3:
        MOV AX,NUMBER[SI]
        CALL SHOWAXD
        NEWLINE
        ADD SI,2
        CMP SI,10
        JNE LP3

        ;暂停,任意键关闭
        mov ah,1
        int 21h
        mov ah,4ch     ;结束,可以修改al设置返回码
        int 21h

SHOWAXD PROC NEAR USES AX BX CX DX SI
......
SHOWAXD ENDP

END START

 

 写完实验,一身轻松啊!


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter