鱼C论坛

 找回密码
 立即注册
查看: 4412|回复: 10

[已解决]请使用零地址指令、一地址指令和二地址指令分别编写程序实现:X=(A+B×C)/(D -E×F)

[复制链接]
发表于 2020-5-14 18:25:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

请使用零地址指令、一地址指令和二地址指令分别编写程序实现:X=(A+B×C)/(D -E×F)

可使用的指令列表如下:

零地址指令
PUSH M,POP M,ADD,SUB,MUL,DIV
一地址指令
LOAD M,STORE M,ADD M,SUB M,MUL M,DIV M
二地址指令
MOVE X ,Y   ADD X, Y    SUB X, Y    MUL X, Y     DIV X,Y

最佳答案
2020-5-14 22:22:00
assume cs:code,ds:data
data segment
        BCshu dw 20,2,2        ;存A B C
        Cshu db 12,2,2        ;存D E F
        Jguo dw 0,0                ;存商和余数
data ends

code segment
start:mov ax,data
        mov ds,ax

        ;被除数计算
        mov ax,BCshu[2]
        mov cx,BCshu[4]
        mul cx
        add ax,BCshu
        adc dx,0
        mov BCshu,ax
        mov BCshu[2],dx
       
        ;除数计算
        mov al,Cshu[1]
        mov cl,Cshu[2]
        mul cl
        mov bh,0
        mov bl,Cshu
        mov cx,ax
        sub bx,cx
       
        mov ax,BCshu
        mov dx,BCshu[2]
        div bx
        mov Jguo,ax
        mov Jguo[2],dx
       
        mov ax,4c00h
        int 21h
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-14 18:27:06 | 显示全部楼层
在线等答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 18:35:30 | 显示全部楼层

汇编这里人很少的……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-14 18:53:10 | 显示全部楼层

那我该去哪儿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-14 18:55:01 | 显示全部楼层

兄第,你会吗,我们没学过汇编,我们老师给我们出这种题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 18:56:48 | 显示全部楼层
邹华桥 发表于 2020-5-14 18:55
兄第,你会吗,我们没学过汇编,我们老师给我们出这种题

我也不会汇编
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 22:07:31 | 显示全部楼层
邹华桥 发表于 2020-5-14 18:55
兄第,你会吗,我们没学过汇编,我们老师给我们出这种题

不会没事,因为可以学
问题不是会不会,而是学不学
你想不想学汇编语言?如果不想学,随便找个理由糊弄过去就好了
如果想学,那就是另一回事了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-14 22:22:00 | 显示全部楼层    本楼为最佳答案   
assume cs:code,ds:data
data segment
        BCshu dw 20,2,2        ;存A B C
        Cshu db 12,2,2        ;存D E F
        Jguo dw 0,0                ;存商和余数
data ends

code segment
start:mov ax,data
        mov ds,ax

        ;被除数计算
        mov ax,BCshu[2]
        mov cx,BCshu[4]
        mul cx
        add ax,BCshu
        adc dx,0
        mov BCshu,ax
        mov BCshu[2],dx
       
        ;除数计算
        mov al,Cshu[1]
        mov cl,Cshu[2]
        mul cl
        mov bh,0
        mov bl,Cshu
        mov cx,ax
        sub bx,cx
       
        mov ax,BCshu
        mov dx,BCshu[2]
        div bx
        mov Jguo,ax
        mov Jguo[2],dx
       
        mov ax,4c00h
        int 21h
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-14 22:22:41 | 显示全部楼层
可以算正数,负数的自己再修改下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 12:05:39 | 显示全部楼层
xie1234abc 发表于 2020-5-14 22:22
可以算正数,负数的自己再修改下。

感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 14:07:48 | 显示全部楼层
现在这个只可以算除数为正的情况。
要算除数为负,给你个思路:加个判断语句,如果除数为负时,用 E*F-D 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-1 03:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表