用汇编语言编写一段程序实现两个六位的十进制数的加法,把运算结果显示在屏幕上

就是汇编呗,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汇编,应是楼主要的
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-17
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

单片机的。而且要单步执行!不知道是不是你要的。本回答被网友采纳
第2个回答  2010-11-27
cmp R1,0x30
jb fuck
jmp a
fuck:
add R1,0x30
a:
.......
第3个回答  2010-11-19
楼主要先说清楚是用什么汇编语言。

用汇编语言编写一段程序实现两个六位的十进制数的加法,把运算结果显 ...
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矫正...

汇编语言如何将数值以十进制的形式输出到屏幕上
设置一字符串sBuf长度为14满足最大长度就OK 看你的数值长度,如果2字节的,即0~65535的值,可以用以下代码。要转换的放到AX里,字符串尾放SI里 MOV AX,VAL XOR DX,DX MOV BX,10 AGAIN: DIV BX ADD AL,30H MOV [SI],AL DEC SI XOR AX,AX CMP DX,0 JNZ AGAIN:之后把SI所指向的字符串...

汇编语言怎样将内存中的数据在屏幕上以十进制形式显示出来
CODES SEGMENT ;代码段 ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS ;初始化 MOV DS,AX mov ax,num ;取内存数到AX call show ;显示十进制形式 mov ah,7 ;暂停 int 21h MOV AX,4C00H ;退出程序 INT 21H show:xor cx,cx mov bx,10 nx1:xor dx,dx div bx or dx,0e30h inc ...

...把BX寄存器中的数以十进制的形式显示在屏幕上。
每次循环环左移四位 MOV DX,BX AND DL,0FH ;每次取低四位,来表示一个十六进数 ADD DL,30H ;转化成为ASSIC码 CMP DL,3AH ;判断DL是否大于10的ASSIC码(A+30H) JB NEXT ADD DL,7 ;大于10再加上7 NEXT: MOV AH,2 INT 21H DEC CH JNZ LOP MOV DX,OFF...

用汇编语言将两个两位十进制数相加
Y AAA PUSHF OR AL,30H MOV RE+2,AL POPF MOV AL,X+1 ADC AL,Y+1 AAA PUSHF OR AL,30H MOV RE+1,AL POPF

[汇编]请问汇编语言中如何输出十进制计算结果?
一般汇编语言教材中都有这个问题的例题,建议去找本书参考一下。大体需要5个步骤,过程如下:1. 将AX中内容除以10000,得到的商是万位数,余数暂存起来。将所得的商转成ASCII码,输出显示。2. 将刚才的余数除以1000,得到的商是千位数,余数暂存起来。将所得的商转成ASCII码,输出显示。3. 将刚才的...

用汇编语言编写程序从键盘输入两个一位十六进制数相加显示结果,要求...
add bl, num1 mov al, bl call dectobinary mov ah, 04ch int 21h inputnum proc Input:mov ah, 1 int 21h mov bl, al mov ah, 2 mov dl, 0ah int 21h mov ah, 2 mov dl, 0dh int 21h cmp bl, 'f'jg InputError cmp bl, 'a'jl LessThanLa sub bl, 87 jmp InputDone ...

用汇编语言编写一个小小程序
这个还不简单#include<stdio.h>void main(){ float a,b,c,s;\/*定义数据类型,数据初始化*\/s=(a*b+c)\/a;\/*计算并把计算结果赋值给s*\/printf("s=%f\\n",s);\/*输出计算结果*\/}

汇编语言:数据段中定义一个字型数据,将其转换成十进制数并输出到屏幕...
dseg mov ds, ax mov ax, a call print mov ax, 4c00h int 21hprint proc near xor cx, cx mov bx, 10q0: xor dx, dx div bx xor dx, 0e30h push dx inc cx cmp ax, 0 jnz q0q1: pop ax int 10h loop q1 retprint endpcseg endsend start ...

用汇编语言编写一个时钟程序,在微机屏幕上显示当前时间的时、分、秒...
用汇编语言编写一个时钟程序,在微机屏幕上显示当前时间的时、分、秒。在程序启动后,可键入当前时间和闹钟时间,回车键按下后,开始计时,微机屏幕上显示时间的时、分、秒,到闹钟时间时扬声器发声。 展开  我来答 1个回答 #热议# 哪些癌症可能会遗传给下一代?ぺ心傷葬爱ジ9d364 2009-06-29 · TA获得超过...

相似回答
大家正在搜