program for LC3 Assembly language

匆匆过客 提交于 2019-12-25 18:45:16

问题


How do you convert any character input from the user to its corresponding decimal value? I was just having trouble getting started.

The program has to achieve the following things:

  1. The program accepts character from keyboard.

  2. If the character is a digit (‘0’ through ‘9’): a) Convert the character to its corresponding decimal value. In other words, ‘0’ becomes zero, ‘1’ becomes 1, ... ‘9’ becomes 9. Let’s call that value R (for “run length”). b) Wait for another character (using GETC). c) Print R copies of that character to the console. ) d) Go back to Step 1.

  3. Else, if the character is Enter/Return (ASCII #10): Print a linefeed (ASCII #10) to the console, and go back to Step 1.

  4. Else, if the character is anything else, halt the program.


回答1:


You convert decimal digit character it to number subtracting '0' (=0x30) from it. For hex digits ('A'to 'F'): If character is greater than '@', you subtract 0x37 from it ('A' -> 0x0a). For hex digits ('a'to 'f'): If the value is still bigger than 15, you subtract 0x20 from it Or you can use a table for mapping. 256 bytes is not bery big table.

  • You set result (variable, register, ...) to zero
  • You read character by character in a loop
  • You convert the character to new number (of one digit)
  • if it's invalid hex digit character, return the variable - you're done
  • else variable = variable * 16 + new number
  • multiplying by 16 can be done by shifting left 4 bit places


来源:https://stackoverflow.com/questions/22698066/program-for-lc3-assembly-language

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!