| ||||||||||
Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
题目翻译+修改过的样例【题目描述】 考虑有以下属性的一个微处理器: 每个字节有4位(即范围从0-15); 地址由两个字节表示。第一个字节为高位字节。(如2A表示十进制下的42) 内存有256个字节; 有两个累加器,A和B,每个存储一个字节; 有9种命令码。每个命令码包括至少1个字节来表示命令的类型。有4种特殊命令需要额外两个字节来表示参数。 每个4位的数字含有0-15中的一个值。我们用通常的方法表示这些16进制数,即A表示10,B表示11... 下面是9种命令码: 代码 需要字节数 描述 0 3(0xy) LD:A累加器获得内存xy处的数值。 1 3(1xy) ST:把内存xy处的数值修改为A累加器中的数值。 2 1(2) SWP:交换A,B累加器的数值。 3 1(3) ADD:将A,B累加器的数值相加。低位数值存储在A中,高位数值存储在B中。 (如相加后得到2E,A累加器的值变为2,B累加器的值变为E) 4 1(4) INC:将A累加器的数值加1。假如A累加器原本的值为F,则A累加器的值变为0。 5 1(5) DEC:将A累加器的数值减1。假如A累加器原本的值为0,则A累加器的值变为F。 6 3(6xy) BZ:如果A累加器的值为0,下一个执行的命令的位置更改为xy;否则不做变化。 7 3(7xy) BR:下一个执行的命令的位置更改为xy。 8 1 STP:结束程序。 微处理器总是从地址00开始执行命令。在没有遇到特殊命令(具体指7/8)的情况下,按原序列的顺序执行命令(即从当前位置往后)。 下面举个例子: 程序 描述 01A8 A累加器获得内存1A(十进制下的26)处的数值, 结束。 01A512F8 A累加器获得内存1A(十进制下的26)处的数值, A累加器的数值减1, 把内存2F处的数值修改为A累加器中的数值, 结束。 0074107600 A累加器获得内存07处的数值6, A累加器的数值加1(变为7), 把内存07处的数值修改为A累加器中的数值(7),此时程序变为0074107700, 下一个执行的命令的位置更改为00, A累加器获得内存07处的数值7, A累加器的数值加1(变为8), 把内存07处的数值修改为A累加器中的数值(8),此时程序变为0074107800, 结束。 【输入格式】 输入会有多行,每行包含恰好256个字母。假如在00处的命令码为8,则输入结束。数据保证你不会执行F0之后的命令码。 【输出格式】 你需从00处开始执行,假如执行命令码8,你需要马上退出,输出当前内存,并输出一个换行符。 【样例输入】 0102011311321128FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8 【样例输出】 0102011311321128FF1E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator