汇编 10进制转16进制 冒泡排序
2009年10月24日 06:16
最后一个汇编实验里用到的,这两个还是很有用的,于是贴上来
.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
.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