二进制转换成十进制的汇编程序
时间:2007-01-06
来源:互联网
作者: PG870116 发布时间: 2007-01-06
作者: cloudgamer 发布时间: 2007-01-07
; Input: The binary value in the pair (R1,R0).
; Output: Four decimal digits in R13 to R10, the most significant in R13.
; Algorithm:
; R13 = 0; Increments R13 while (R1,R0)-1000 is positive
; R12 = 0; Increments R12 while (R1,R0)-100 is positive
; R11 = 0; Increments R11 while (R1,R0)-10 is positive
; R10 = R0;
0x0000: MODEL A ; Processor uP1232a
; For example: 0x2694 = 9.876
LD R1, 0x26
LD R0, 0x94
DEC2BIN:
LD R13, 0
LD R12, 0
LD R11, 0
LD R10, 0
LD R3, 0x03
LD R2, 0xE8 ; 0x03E8 = 1.000
LOOP1: INC R13
SUB R0, R2
SBC R1, R3 ; R1R0 - 1000
JP NC, LOOP1
DEC R13
ADD R0, R2
ADC R1, R3
LD R3, 0
LD R2, 100
LOOP2: INC R12
SUB R0, R2
SBC R1, R3 ; R1R0 - 100
JP NC, LOOP2
DEC R12
ADD R0, R2
ADC R1, R3
LD R3, 0
LD R2, 10
LOOP3: INC R11
SUB R0, R2
SBC R1, R3 ; R1R0 - 10
JP NC, LOOP3
DEC R11
ADD R0, R2
ADC R1, R3
LD R10, R0
#align ; Aligns code
HALT: BREAK ; Break-point
GOTO HALT ; Stop processing until RESET
; End of file
作者: dogfish 发布时间: 2007-01-09
btod2是一个过程。在调用过程前,要转化的二进制数先放在了BX寄存器中。disp2是一个显示十进制数的过程。
btod2 proc
push ax
push bx
push cx
push dx
mov cx,10000
call disp2
mov cx,1000
call disp2
mov cx,100
call disp2
mov cx,10
call disp2
mov cx,1
call disp2
pop dx
pop cx
pop bx
pop ax
ret
btod2 endp
disp2 proc ;显示一位数字的函数
mov dl,0
again1: cmp bx,cx
jb ext1
inc dl
sub bx,cx
jmp again1
ext1: add dl,30h
cmp dl, '0 '
mov ah,02h
int 21h
ret
disp2 endp
作者: linandmin 发布时间: 2007-01-11
作者: xkw365 发布时间: 2007-01-11
看了半天,也不象是ARM的 ,不象是C51的,更不是X86系列的~~~~~
赐教~~~~~~谢谢~!
作者: kinges 发布时间: 2007-01-11
;从键盘上输入一个十进制数据并转换为二进制的子程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
P_GETNEW PROC
PUSH BX ;出口参数:AX=补码表示的二进制数
PUSH CX ;说明:负数用“-”引导,数据范围是+32767~-32768
PUSH DX
XOR BX,BX ;BX保存结果
XOR CX,CX ;CX为正负标志,0为正,-1为负
MOV AH,1 ;输入一个字符
INT 21H
CMP AL, '+ ' ;是“+”,继续输入字符
JZ READ1
CMP AL, '- ' ;是“—,设置-1标志
JNZ READ2
MOV CX,-1
READ1: MOV AH,1 ;继续输入字符
INT 21H
READ2: CMP AL, '0 ' ;不是0~9之间的字符,则输入数据结束
JB READ3
CMP AL, '9 '
JA READ3
SUB AL,30H ;是0~9之间的字符,则转换为二进制数
;利用移位指令,实现数值乘10:BX←BX*10
SHL BX,1
MOV DX,BX
SHL BX,1
SHL BX,1
ADD BX,DX
MOV AH,0
ADD BX,AX ;已输入数值乘10后,与新输入的数值相加
JMP READ1 ;继续输入字符
READ3: CMP CX,0 ;是负数,进行求补
JZ READ4
NEG BX
READ4: MOV AX,BX ;设置出口参数
POP DX
POP CX
POP BX
RET ;子程序返回
P_GETNEW ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;二进制数据转换为十进制的输出子程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
P_OUTPUT PROC
PUSH AX ;入口参数:共享变量WTEMP
PUSH BX
PUSH DX
MOV AX,WTEMP ;取出显示的数据
TEST AX,AX ;判断数据是零、正书还是负数
JNZ WRITE1
MOV DL, '0 ' ;是‘0’,显示‘0’后退出
MOV AH,2
INT 21H
JMP WRITE5
WRITE1: JNS WRITE2 ;是负数,显示“-”
MOV BX,AX ;AX数据暂存于BX
MOV DL, '- '
MOV AH,2
INT 21H
MOV AX,BX
NEG AX ;数据求补(绝对值)
WRITE2: MOV BX,10
PUSH BX ;10压入堆栈,做为推退出标志
WRITE3: CMP AX,0 ;数据(商)为零,转向显示
JZ WRITE4
SUB DX,DX ;扩展被除数DX.AX
DIV BX ;数据除以10
ADD DL,30H ;余数(0~9)转换为ASCⅡ码
PUSH DX ;数据各位先低位后高位压入堆栈
JMP WRITE3
WRITE4: POP DX ;数据各位先高位后低位弹出堆栈
CMP DL,10 ;是结束标志10,则退出
JE WRITE5
MOV AH,2 ;进行显示
INT 21H
JMP WRITE4
WRITE5: POP DX
POP BX
POP AX
MOV DL,20H
MOV AH,02H
INT 21H
RET ;子程序返回
P_OUTPUT ENDP
作者: gallanthunter 发布时间: 2007-01-17
作者: DelphiGuy 发布时间: 2007-01-18
作者: CCenter 发布时间: 2008-11-19
data segment num db 01Fh data ends stack segment STACK db 256 dup(0) tos label word stack ends code segment assume cs:code,ds:data begin: mov ax,0d mov ax,0dh mov ax,data mov ds,ax mov es,ax mov ax,stack mov ss,ax mov sp,offset tos xor ax,ax mov al,num xor cx,cx ;下面是将cout中的数以十进制显示出来 DoDiv: mov bl,10 div bl ;al←ax/10的商 ;ah←ax/10的余数 push ax ;保存结果 inc cx xor ah,ah ;ah清零,清除余数 cmp al,0 ;判断商是否为零 jnz DoDiv DoPrt: pop dx ;dx中保存的是每次除的结果 xchg dh,dl add dl,30h ;dl中的数字是每次除后的商,将其表示成ascii mov ah,2 int 21h loop DoPrt exit: mov ax,4c00h ;退出DOS int 21h code ends end begin
作者: killbug2004 发布时间: 2008-11-19
作者: Ajampie 发布时间: 2008-11-19
作者: killbug2004 发布时间: 2008-11-19
作者: SimonYeung 发布时间: 2008-11-21
作者: liuyisj 发布时间: 2011-06-13
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28