用汇编语言编写一段程序实现两个六位的十进制数的加法,把运算结果显示在屏幕上
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用汇编语言编写一段程序实现两个六位的十进制数的加法,把运算结果显示在屏幕上相关的知识,希望对你有一定的参考价值。
就是汇编呗,adc指令实现转化压缩非压缩的bcd码什么的
stack segment para stack 'stack'st1 db 64 dup(?)
stack ends
data segment
num equ 6 ;数字位数(最好为偶数),若为奇数需稍微改动程序
msg1 db 'Enter the first number(ESC to exit) : ','$'
msg2 db 'Enter the second number(ESC to exit) : ','$'
msg3 db 0dh,0ah,'ERROR! Enter again(ESC to exit) : ','$'
num1 db num dup(0) ;存第一个数
num2 db num dup(0) ;存第二个数
res db 0dh,0ah,'The resust is : ','$'
data ends
output macro abyt
push ax
mov dl, abyt
mov ah, 02h
int 21h
pop ax
endm
code segment
assume ss:stack,ds:data,cs:code
main proc far
mov ax, data
mov ds, ax
again:
lea dx, msg1
mov ah, 09h
int 21h ;提示输出第一个数
lea bx, num1
call input ;调用输入
output 0dh ;回车,换行
output 0ah
lea dx, msg2
mov ah, 09h
int 21h ;提示输入第二个数
lea bx, num2
call input
output 0dh ;回车,换行
output 0ah
mov si, 0 ;SI清零
mov ax, 0
L2: lea bx, num1 ;读取第一个数列
mov al, [bx][si]
add al, ah
mov ah, 0
lea bx, num2
add al, [bx][si] ;读取第二个数列
aaa ;BCD矫正
add al, 30h ;变成ASCII码
mov cl, al
inc si
lea bx, num1
mov al, [bx][si] ;第二个数列
add al, ah
mov ah, 0
lea bx, num2
add al, [bx][si]
aaa
add al, 30h
mov ch, al
push cx ;结果放入堆栈,等待输出
inc si
cmp si, num-1 ;循环,读完所有数
jb l2
mov ch, ah
lea dx, res
mov ah, 09h
int 21h
add ch, 30h
output ch
mov al, 0
outl: ;输出结果循环
pop cx
output ch
output cl
inc al
cmp al, num/2
jb outl
quit: ;退出
mov ah, 4ch
int 21h
main endp
input proc near ;输入之程序
start:
mov di, num
l1:
mov ah, 01H ;输入
int 21h
cmp al, 1bh ;ESC退出
jz quit
cmp al, 30h ;(数字)?继续:退出
jb error
cmp al, 40h
ja error
sub al, 30h
dec di
mov [bx][di],al ;存入数据
cmp di, 0
ja l1 ;循环
ret
error: ;输入错误支路
lea dx, msg3
mov ah, 09h
int 21h
mov di, num
jmp start
input endp
code ends
end main
哈哈!本人正在学汇编,这是刚写完的作业!8086汇编,应是楼主要的 参考技术A org 1000h
clr c
mov 50h,#86h
mov 51h,#96h
mov 52h,#34h
mov 55h,#12h
mov 56h,#38h
mov 57h,#47h
mov r7,#03h
mov r0,#50h
mov r1,#55h
mov dptr,#2000h
s:mov a,@r0
addc a,@r1
da a
movx @dptr,a
inc r0
inc dptr
inc r1
djnz r7,s
clr a
addc a,#00h
movx @dptr,a
nop
end
单片机的。而且要单步执行!不知道是不是你要的。 参考技术B cmp R1,0x30
jb fuck
jmp a
fuck:
add R1,0x30
a:
....... 参考技术C 楼主要先说清楚是用什么汇编语言。
ZZNUOJ_用C语言编写程序实现1143:最大值—多种进制(附完整源码)
题目描述
输入n个数,每个数的进制由其后面的数字k指定,k>=2且k<=10, 输出最大的数对应的十进制数。
要求程序定义一个KTod()函数和一个main()函数,KToD() 函数的功能是将k进制数转化为十进制整数,其余功能在main()函数中实现。
int KToD(char str[], int k) //函数返回k进制数str对应十进制整数
输入
首先输入整数n,然后是n行,每行包含一个字符串和一个整数k,用空格隔开,该字符串表示一个k进制数。所有输入均为非负数。
以上是关于用汇编语言编写一段程序实现两个六位的十进制数的加法,把运算结果显示在屏幕上的主要内容,如果未能解决你的问题,请参考以下文章