代码跳转不正确
Code isn't jumping correctly
我目前正在尝试完成作业,但遇到了一些问题。
这是作业
https://i.imgur.com/UfilSVp.png
就像现在一样,当我输入 'CC' 时,我只会返回
Feed me(2 hex digits with the bits prsseeee):CC
Fall Semester
Total Fees = $ 97
我应该什么时候回来
Feed me(2 hex digits with the bits prsseeee): CC
Fall Semester
12 units
CA Resident
Parking
Total Fees = $ 688
这是我到目前为止所做的。
我也只允许使用
** http://homepage.smc.edu/stahl_howard/cs17/FileManager/referenceguides/referenceguideiv.htm
到目前为止
program SMCFee;
#include( "stdlib.hhf" );
static
total : int32 := 0;
begin SMCFee;
stdout.put("Feed me(2 hex digits with the bits prsseeee):" );
stdin.get(BL);
ror(4, BL);
and(%0000011, BL);
cmp(BL, %00);
je Fall;
cmp(BL, %01);
je Winter;
cmp(BL, %10);
je Spring;
cmp(BL, %11);
je Summer;
Fall:
stdout.put("Fall Semester",nl);
add(50, total);
ror(1, BL);
and(%0000001, BL);
cmp(BL, 0);
je NoFallResident;
cmp(BL, 1);
je FallResident;
FallResident:
rol(6, BL);
and(%00001111, BL);
mov(BL, AL);
stdout.put(AL,nl);
stdout.put("CA Resident");
FallUnitCheck:
cmp(AL, 0);
jle FallParkingCheck;
add(46, total);
dec(AL);
jmp FallUnitCheck;
FallParkingCheck:
ror(7, BL);
and(%0000001, BL);
cmp(BL, 0);
je NoFallResidentParking;
cmp(BL, 1);
je FallResidentParking;
FallResidentParking:
stdout.put("Parking",nl);
add(85, total);
jmp zend;
NoFallResidentParking:
jmp zend;
NoFallResident:
ror(1, BL);
and(%0000001, BL);
cmp(BL, 0);
je FallNoResidentParking;
cmp(BL, 1);
je NoFallNoResidentParking;
FallNoResidentParking:
NoFallNoResidentParking:
Winter:
add(47, total);
jmp zend;
Spring:
add(47, total);
jmp zend;
Summer:
add(50, total);
jmp zend;
zend:
stdout.put("Total Fees = $ ",total);
end SMCFee;
cmp(BL, 00);
je Fall;
cmp(BL, 01);
je Winter;
cmp(BL, 10);
je Spring;
cmp(BL, 11);
je Summer;
您忘记了二进制前缀 %。前 2 次比较不需要它,但最后 2 次错误地与十 (10) 和十一 (11) 进行比较!
cmp(BL, %00);
je Fall;
cmp(BL, %01);
je Winter;
cmp(BL, %10);
je Spring;
cmp(BL, %11);
je Summer;
我认为你有一些错误:
- 错误的基数前缀[@Fifoernik 指出]
- 放错了 JMP 指令
- 对 AND 如何用于 "masking"
的误解
- 屏蔽后输入数据丢失。
学习处理二进制值最初是un-intuitive。
这些是绿色汇编语言程序员的典型错误。
通过他们进入 运行 计划确实有助于建立信心。
多做这些,你会很擅长的。
学习在心理上模拟您的代码。这就像金子一样得到回报。
我目前正在尝试完成作业,但遇到了一些问题。
这是作业
https://i.imgur.com/UfilSVp.png
就像现在一样,当我输入 'CC' 时,我只会返回
Feed me(2 hex digits with the bits prsseeee):CC
Fall Semester
Total Fees = $ 97
我应该什么时候回来
Feed me(2 hex digits with the bits prsseeee): CC
Fall Semester
12 units
CA Resident
Parking
Total Fees = $ 688
这是我到目前为止所做的。
我也只允许使用
** http://homepage.smc.edu/stahl_howard/cs17/FileManager/referenceguides/referenceguideiv.htm
到目前为止
program SMCFee;
#include( "stdlib.hhf" );
static
total : int32 := 0;
begin SMCFee;
stdout.put("Feed me(2 hex digits with the bits prsseeee):" );
stdin.get(BL);
ror(4, BL);
and(%0000011, BL);
cmp(BL, %00);
je Fall;
cmp(BL, %01);
je Winter;
cmp(BL, %10);
je Spring;
cmp(BL, %11);
je Summer;
Fall:
stdout.put("Fall Semester",nl);
add(50, total);
ror(1, BL);
and(%0000001, BL);
cmp(BL, 0);
je NoFallResident;
cmp(BL, 1);
je FallResident;
FallResident:
rol(6, BL);
and(%00001111, BL);
mov(BL, AL);
stdout.put(AL,nl);
stdout.put("CA Resident");
FallUnitCheck:
cmp(AL, 0);
jle FallParkingCheck;
add(46, total);
dec(AL);
jmp FallUnitCheck;
FallParkingCheck:
ror(7, BL);
and(%0000001, BL);
cmp(BL, 0);
je NoFallResidentParking;
cmp(BL, 1);
je FallResidentParking;
FallResidentParking:
stdout.put("Parking",nl);
add(85, total);
jmp zend;
NoFallResidentParking:
jmp zend;
NoFallResident:
ror(1, BL);
and(%0000001, BL);
cmp(BL, 0);
je FallNoResidentParking;
cmp(BL, 1);
je NoFallNoResidentParking;
FallNoResidentParking:
NoFallNoResidentParking:
Winter:
add(47, total);
jmp zend;
Spring:
add(47, total);
jmp zend;
Summer:
add(50, total);
jmp zend;
zend:
stdout.put("Total Fees = $ ",total);
end SMCFee;
cmp(BL, 00);
je Fall;
cmp(BL, 01);
je Winter;
cmp(BL, 10);
je Spring;
cmp(BL, 11);
je Summer;
您忘记了二进制前缀 %。前 2 次比较不需要它,但最后 2 次错误地与十 (10) 和十一 (11) 进行比较!
cmp(BL, %00);
je Fall;
cmp(BL, %01);
je Winter;
cmp(BL, %10);
je Spring;
cmp(BL, %11);
je Summer;
我认为你有一些错误:
- 错误的基数前缀[@Fifoernik 指出]
- 放错了 JMP 指令
- 对 AND 如何用于 "masking" 的误解
- 屏蔽后输入数据丢失。
学习处理二进制值最初是un-intuitive。
这些是绿色汇编语言程序员的典型错误。 通过他们进入 运行 计划确实有助于建立信心。 多做这些,你会很擅长的。
学习在心理上模拟您的代码。这就像金子一样得到回报。