8086微机原理编程题。输入两个一位十进制数,求差的绝对值结果存入内存单元,求步骤和说明,谢谢
8086微机原理编程题。输入两个一位十进制数,求差的绝对值结果存入内存单元,求步骤和说明,谢谢真心求助,万分感谢...
8086微机原理编程题。输入两个一位十进制数,求差的绝对值结果存入内存单元,求步骤和说明,谢谢真心求助,万分感谢
展开
1个回答
展开全部
写出基本框架
数据段:定义变量
代码段:
主体代码:数据段初始化,退出代码
; base structure
dseg segment
a db 0 ;输入的第1个数
b db 0 ;输入的第2个数
r db 0 ;保存的计算结果 a-b
dseg ends
cseg segment
assume cs:cseg, ds:dseg
start:
mov ax, dseg
mov ds, ax
;这里开始写题目要求的代码
; exit to os
mov ah, 4ch
int 21h
cseg ends
end start读取变量a, b, 计算a-b并写入r
;下面的代码需要写入上面 " ;这里开始写题目要求的代码"之后
mov ah,1
int 21h ;用int 21H的1功能,读取一个数据字符(al)中
sub al, 30H ;不考虑输出非数字字符情况下,减30H即为对应的10进制数
mov a, al ;保存到变量a
int 21h ; 读取第2个字符 ,这里注意,输入两个数的时侯,中间不要加回车、空格等
;这里,因为ah, 没有发生改变,所以省略了一步mov ah,1
sub al,30h
mov b, al
mov bl, a ;提取保存的a
sub bl, al ;计算a-b,放入bl
mov r, bl ;计算结果放入 r编译并调用程序
用masm 或tasm等。
追问
太给力了,我还提了两个一样的问题,都是悬赏一百,您底下留一下言,我把悬赏都给您,然后能给我一份完全版么
追答
两处的程序全到一起就是完全的了。另一问你删除就可以了,不用再加悬赏了。
; base structure
dseg segment
a db 0 ;输入的第1个数
b db 0 ;输入的第2个数
r db 0 ;保存的计算结果 a-b
dseg ends
cseg segment
assume cs:cseg, ds:dseg
start:
mov ax, dseg
mov ds, ax
;这里开始写题目要求的代码
mov ah,1
int 21h ;用int 21H的1功能,读取一个数据字符(al)中
sub al, 30H ;不考虑输出非数字字符情况下,减30H即为对应的10进制数
mov a, al ;保存到变量a
int 21h ; 读取第2个字符 ,这里注意,输入两个数的时侯,中间不要加回车、空格等
;这里,因为ah, 没有发生改变,所以省略了一步mov ah,1
sub al,30h
mov b, al
mov bl, a ;提取保存的a
sub bl, al ;计算a-b,放入bl
mov r, bl ;计算结果放入 r
; exit to os
mov ah, 4ch
int 21h
cseg ends
end start
编译生成exe程序后执行,输入两个连续的数字就是计算他们的和
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询