显示任意两个8位16进制数的加法或减法表达式及其运算结果.如果有进位,显示“Carry”的提示信息,如果被减
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/04 20:57:00
显示任意两个8位16进制数的加法或减法表达式及其运算结果.如果有进位,显示“Carry”的提示信息,如果被减
呵呵,不好意思,又要麻烦你了.
呵呵,不好意思,又要麻烦你了.
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汇编,应是楼主要的
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汇编,应是楼主要的
显示任意两个8位16进制数的加法或减法表达式及其运算结果.如果有进位,显示“Carry”的提示信息,如果被减
C#编程:定义一个复数类,实现复数的简单加法运算,并能显示结果.
有理数加减法运算给我五十道有理数加法或减法运算.只要有理数加法减法运算的算式而已。而且还要有答案。不能光一个得数
两个补码表示的数相加时,如果最高位(符号位)有进位,能不能明白点说下?
汇编:CF标志的误区加法时,是最高位产生进位,还是使最高位的高一位产生进位时CF=1?减法时,是最高位被借位,还是最高位
如果是一个8位数字,那它的奇位千进位,和偶位千进位又是什么?
20以内的进位加法 还有退位减法
进行加减运算时.若有进位或借位,从PSW的什么位可以判断?
“两个用补码表示的数相加时,如果在最高位产生进位,则表示运算溢出”是否正确?为什么?
1、四则混合运算中,加法和减法叫做第()运算,乘法和除法叫做第()运算,在一个没有括号的算式里,如果只有第一级或第二级运
进位加法的概念
减法是加法的什么运算?