⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ieeeconv_exmaple.asm

📁 用汇编写的矩阵乘法和IEEE浮点数转换
💻 ASM
字号:

MYDATA	SEGMENT
	BUFF	DB 38
		DB ?
		DB 38 DUP(0)
		DB 0DH,0AH,'$'
	INFO	DB 'Convert from fix pointer number to IEEE float format'
		DB 0DH,0AH,'Your input should be positive only,'
		DB 0DH,0AH,'   for there is only sign bit diffrence' 
		DB 0DH,0AH,'   between a positive number and negtive one.'
		DB 0DH,0AH,'Input a decimal fraction number : 0.$'
	RESULT	DB 0DH,0AH,'This is the final result: $'
	CRLF	DB 0DH,0AH,0DH,0AH,'$'
	IEEE	DB '0',',',8 DUP(0),',',23 DUP(30H),0DH,0AH,'$'
MYDATA	ENDS

EDATA	SEGMENT
	TEMP DW 4 DUP(0)
EDATA	ENDS

SSTACK	SEGMENT	STACK 'STACK'
	DW 10 DUP(0)
SSTACK	ENDS

CCODE	SEGMENT
MAIN	PROC	FAR
	ASSUME	CS:CCODE,DS:MYDATA,ES:EDATA,SS:SSTACK
START:
	MOV	AX,SSTACK
	MOV	SS,AX
	PUSH    DS
	SUB	AX,AX		;MOV AX,0
	PUSH	AX
	MOV	AX,MYDATA
	MOV	DS,AX
	MOV	AX,EDATA
	MOV	ES,AX
;Your Code Can Be Input Below: 
	LEA DX,INFO
	MOV AH,09H
	INT 21H     ;print the information
	LEA DX,BUFF
	MOV AH,0AH
	INT 21H     ;receive a fraction number
	MOV SI,OFFSET BUFF
	INC SI
	XOR CX,CX
    MOV CL,[SI]
    INC SI
    XOR AX,AX
    MOV DL,10
AGAIN:	MUL DL
        MOV BH,0
        MOV BL,[SI]        
        SUB  BL,30H
        ADD  AX,BX
        INC  SI
        LOOP  AGAIN ;ASCII to binary
    MOV  TEMP,AX
    MOV SI,OFFSET BUFF
	INC SI
	XOR CX,CX
    MOV CL,[SI]
    MOV AX,1
    MOV BX,10
LOP:  MUL BX
      LOOP LOP   ; AX=10^lenght
	MOV BX,TEMP  ; BX=binary
	MOV DL,1     ;DL count the exponent(1-127)
NEXT:   ADD BX,BX
        SUB BX,AX
        JNS A
        ADD BX,AX
        INC DL
        JMP NEXT
A:  MOV TEMP,AX ;TEMP 存10^
    MOV AL,127
    SUB AL,DL ;AL contains the exponent to be saved(8 bit)
    MOV CX,8
    MOV AH,80H
    MOV SI,OFFSET IEEE ;'0'
    INC SI             ;','
B:  INC SI
    MOV DL,0
    TEST AL,AH
    JZ BC
    INC DL
 BC: ADD DL,30H
     SHR AH,1       ;AH逻辑右移
     MOV [SI],DL
     LOOP B
   INC SI
   MOV AX,TEMP
   MOV CX,23
 D: INC SI        ;','
    MOV DL,1
    ADD BX,BX
    JZ E
    SUB BX,AX
    JNS F
    ADD BX,AX
    DEC DL
  F:ADD DL,30H
    MOV [SI],DL
    LOOP D
	;
E:  LEA DX,RESULT
	MOV AH,09H
	INT 21H           
	LEA DX,IEEE
	MOV AH,09H
	INT 21H          ;print the result
;Your Code Have Been Ended:
	MOV	AH,4CH
	INT	21H
	RET	
MAIN	ENDP
CCODE	ENDS
	END	START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -