单相电机为什么加电容:谁能用汇编帮我做一下“不同进位制数及编码相互转换”

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 00:05:44
我需要的是源代码

二楼的给个联系方法
qq之类的
有问题问你

我以前写的,里面都是以函数的形式出现的,因为我把它做成库了,你用的时候把数据和函数粘贴一下就可以了,
发上来格式可能有点变形,你自己整理一下:

.MODEL SMALL
.386

PUBLIC CONVER10
PUBLIC CONVER16
PUBLIC CONVER2

PUBLIC NUM10
PUBLIC NUM16
PUBLIC NUM02

;************************************* 数据段DG *****************************************

.DATA

NUM10 DB 11 DUP(?), '$';
NUM16 DB 8 DUP(?), '$';
NUM02 DB 32 DUP(?), '$';

;************************************* 代码段CG *****************************************

.CODE

;用于将EAX中数值转换成10进制数

CONVER10 PROC NEAR

PUSHF;
PUSHAD;

LEA SI, NUM10; 装入NUM10地址, 准备转换

CMP EAX, 0;
JNZ EAX_NOT_0;

MOV DL, '0'; 处理EAX是0的情况
MOV [SI], DL;
INC SI;
JMP CONVER_END_10;

EAX_NOT_0: MOV EBX, 10D;
XOR CL, CL;

DIV10: CMP EAX, 0;
JZ CONVER_END_10;
XOR EDX, EDX;
DIV EBX;
ADD DL, 30H;
MOV [SI], DL;
INC SI;
INC CL;
JMP DIV10;

CONVER_END_10: MOV DL, '$';
MOV [SI], DL;

CMP CL, 1;
JBE END10;

SHR CL, 1;
XOR CH, CH;
DEC SI;
LEA BX, NUM10;

REVER10: MOV AL, [BX];
XCHG [SI], AL;
MOV [BX], AL;

INC BX;
DEC SI;

LOOP REVER10;

END10: POPAD;
POPF;

RET;

CONVER10 ENDP

;用于将EAX中数值转换成16进制数

CONVER16 PROC NEAR

PUSHF;
PUSHAD;

LEA SI, NUM16;

CMP EAX, 0;
JNZ EAX_NOT_0_16;

MOV DL, '0'; 处理EAX是0的情况
MOV [SI], DL;
INC SI;
JMP CONVER_END_16;

EAX_NOT_0_16: MOV EBX, 10H;
XOR CL, CL;

DIV16: CMP EAX, 0;
JZ CONVER_END_16;
XOR EDX, EDX;
DIV EBX;

CMP DL, 9H;
JA CHECKL;

CHECKN: ADD DL, 30H;
JMP ADDC;

CHECKL: ADD DL, 37H;

ADDC: MOV [SI], DL;
INC SI;
INC CL;
JMP DIV16;

CONVER_END_16: MOV DL, '$';
MOV [SI], DL;

CMP CL, 1;
JBE END16;

SHR CL, 1;
XOR CH, CH;
DEC SI;
LEA BX, NUM16;

REVER16: MOV AL, [BX];
XCHG [SI], AL;
MOV [BX], AL;

INC BX;
DEC SI;

LOOP REVER16;

END16: POPAD;
POPF;

RET;

CONVER16 ENDP

;用于将EAX中数值转换成2进制数

CONVER2 PROC NEAR

PUSHF;
PUSHAD;

LEA SI, NUM02;

CMP EAX, 0;
JNZ EAX_NOT_0_2;

MOV DL, '0'; 处理EAX是0的情况
MOV [SI], DL;
INC SI;
JMP CONVER_END_2;

EAX_NOT_0_2: XOR CL, CL;
MOV DH, '1';
MOV DL, '0';

SHIFT2: CMP EAX, 0;
JZ CONVER_END_2;
SHR EAX, 1;
JC CF_IS_1;
MOV [SI], DL;
JMP INC_SI;
CF_IS_1: MOV [SI], DH;
INC_SI: INC SI;
INC CL;
JMP SHIFT2;

CONVER_END_2: MOV DL, '$';
MOV [SI], DL;

CMP CL, 1;
JBE END2;

SHR CL, 1;
XOR CH, CH;
DEC SI;
LEA BX, NUM02;

REVER2: MOV AL, [BX];
XCHG [SI], AL;
MOV [BX], AL;

INC BX;
DEC SI;

LOOP REVER2;

END2: POPAD;
POPF;

RET;

CONVER2 ENDP

;************************************** 程序结束 *********************************************

END

QQ: 393532940

1..编语言程序上机操作方法实验

举例如下:

例1.1 比较字符串 bjchx

试编写一程序,比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘Match’,否则,显示‘No match’。

我们可以用串比较指令来完成题目所要求的功能。上机过程如下:

1. 建立asm文件

在windows系统环境下,应用写字板编辑程序建立源文件。

2. 用汇编程序MASM队源文件汇编产生目标文件.OBJ

在windows环境下,点击masm文件,而后输入.asm的文件名:

C:>MASM ABC.ASM↙

如汇编指示出错则需重新调用编辑程序修改错误, 直到汇编通过为止。如调试时需要用Lst文件,则应在汇编过程中建立该文件。

3. 用连接程序LINK产生可执行文件EXE

在windows环境下,点击link文件,而后输入*.obj的文件名:

C:>LINK ABC.OBJ↙

4. 执行程序

在windows环境下,点击*.exe文件运行程序,也可在dos的环境下执行程序如下:

C:>ABC↙

Match.

屏幕终端上显示出程序运行结果。

¨另一种调试程序的方法是使用debug程序。

2.系统操作练习

(一) 数据传送练习

将内存DATA1单元开始的0~15共16个数传送到DATA2单元开始的数据区中。

(二) 数码转换程序调试练习

将ASCII码表示的十进制数转换为二进制数。