c语言计算平方差程序,计算机汇编语言,程序设计,求两个数的平方差要求:若是负数,要输出负号;由键盘键入两整数ab,中间用空格隔开;enter键结束输入,并换行显示结果.///////快把我逼疯了,另外...

7d14a2b81882cfe4494b096a84150b2a.png 优质解答

data segment

x dw 0

y dw 0

z dw 0

c db 0h

s db 6 dup(0h),'$'

ctrl db 0dh,0ah,'$'

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

lop1: mov ah,01h

int 21h

cmp al,' '

jz lop2

sub al,30h

mov ah,0h

mov dx,ax

sal x,1

add dx,x

mov cl,2

sal x,cl

add x,dx

jmp lop1

lop2: mov ah,01h

int 21h

cmp al,0dh

jz work

sub al,30h

mov ah,0h

mov dx,ax

sal y,1

add dx,y

mov cl,2

sal y,cl

add y,dx

jmp lop2

work: mov al,byte ptr x

mul al

mov z,ax

mov al,byte ptr y

mul al

cmp z,ax

jb int1

sub z,ax

jmp int2

int1: sub ax,z

mov z,ax

mov c,'-'

int2: mov cx,5h

mov di,4h

mov bx,0ah

mov ax,z

work2: mov dx,0

div bx

add dl,30h

mov s[di],dl

dec di

cmp ax,0h

jz w2exit

loop work2

w2exit: mov al,c

mov s[di],al

mov dx,offset ctrl

mov ah,09h

int 21h

mov di,0

work3: inc di

cmp s[di],0h

jz work3

lea dx,s[di]

mov ah,09h

int 21h

mov ah,4ch

int 21h

code ends

end start

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是用8086指令系统输入个数字的平方差的汇编代码,对于负数结果输出负号: ``` org 100h ;指定程序的起始地址为100h section .data ;定义数据段 msg1 db 'Enter first number: $' ;提示输入第一个数字的消息 msg2 db 'Enter second number: $' ;提示输入第二个数字的消息 msg3 db 'The square difference is: $' ;输出平方差的消息 msg4 db '-$' ;输出负号的消息 section .bss ;定义未初始化数据段 num1 resw 1 ;定义第一个数字变量 num2 resw 1 ;定义第二个数字变量 diff resw 1 ;定义平方差变量 section .text ;定义代码段 start: ;程序入口 ;输入第一个数字 mov ah, 9 ;设置ah寄存器,表示输出字符串 mov dx, msg1 ;将msg1的地址存入dx寄存器 int 21h ;调用21h中断,输出msg1的内容 mov ah, 1 ;设置ah寄存器,表示输入字符 int 21h ;调用21h中断,输入字符 sub al, '0' ;将输入的字符转换成数字 mov word [num1], ax ;将数字存入num1变量 ;输入第二个数字 mov ah, 9 ;设置ah寄存器,表示输出字符串 mov dx, msg2 ;将msg2的地址存入dx寄存器 int 21h ;调用21h中断,输出msg2的内容 mov ah, 1 ;设置ah寄存器,表示输入字符 int 21h ;调用21h中断,输入字符 sub al, '0' ;将输入的字符转换成数字 mov word [num2], ax ;将数字存入num2变量 ;计算平方差 mov ax, [num1] ;将num1的值存入ax寄存器 mul ax ;将ax寄存器的值乘以自己 mov bx, ax ;将结果存入bx寄存器 mov ax, [num2] ;将num2的值存入ax寄存器 mul ax ;将ax寄存器的值乘以自己 sub bx, ax ;将bx寄存器的值减去ax寄存器的值,得到平方差 mov word [diff], bx ;将平方差存入diff变量 ;输出平方差 mov ah, 9 ;设置ah寄存器,表示输出字符串 mov dx, msg3 ;将msg3的地址存入dx寄存器 int 21h ;调用21h中断,输出msg3的内容 mov ax, [diff] ;将diff的值存入ax寄存器 cmp ax, 0 ;比较ax寄存器的值和0 jge positive ;如果ax寄存器的值大于等于0,跳转到positive标签 mov ah, 9 ;设置ah寄存器,表示输出字符串 mov dx, msg4 ;将msg4的地址存入dx寄存器 int 21h ;调用21h中断,输出msg4的内容 neg ax ;将ax寄存器的值取反,得到负数 positive: add al, '0' ;将ax寄存器的值转换成字符 mov dl, al ;将字符存入dl寄存器 mov ah, 2 ;设置ah寄存器,表示输出字符 int 21h ;调用21h中断,输出dl寄存器的值 mov dl, ah ;将ah寄存器的值存入dl寄存器 mov ah, 2 ;设置ah寄存器,表示输出字符 int 21h ;调用21h中断,输出dl寄存器的值 ret ;程序结束,返回操作系统 ``` 上面的代码中,我们使用了`cmp`指令和`jge`指令来判断平方差的正负性,如果平方差大于等于0,则直接输出结果;如果平方差小于0,则输出负号,并将平方差取反。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值