在计算机系统概论课中,我们被要求解决以下问题。老实说,我不明白讲师要我们做什么。
在互联网上搜索了几天之后,现在我认为程序应该执行以下操作:
Input:
x = ( x & y ) | 0f
Output:
mov ax,x
and ax,y
or ax,0FH
mov [x],ax
讲师是否还希望程序计算给定的表达式?我真的很困惑。
关于上面的代码,您认为我走对了吗?
项目问题如下:
(使用C或C ++或Java或Python语言实现该项目)
在此项目中,您将实现一个名为 bitcalc 的程序,该程序为涉及&, | <的表达式和赋值语句序列生成A86汇编代码。 / strong>和?操作的定义如下:
**Operation** **Meaning** a & b Bitwise AND a | b Bitwise OR a ? b Evaluates to b if a > 0 and 0 otherwise
表达式将是中缀表达式,并且可能还包含括号。假设&的优先级高于|和?。两者|和?具有相同的优先级。下面给出了bitcalc用法的示例:
bitcalc Suppose the file example.bit contains:
x = 81 y = ff x = ( x & y ) | 0f y = x | y ? 03 x y
%bitcalc example.bit example.asm was generated. %a86 example.asm %example 8f 03
请注意以下几点:
•您可以假定所有值和运算结果将适合8位。
•您可以假定一个未定义的变量的值为0。
•您可以假定变量名称是字符范围 g-z 和 G-Z 中的单个字符。
•您可以假设每个输入令牌之间都有一个空白。
•所有常量均以2位十六进制格式编写。
•如果语句是表达式,则将表达式的值输出为2位十六进制数字。
原始格式的问题是here。