【发布时间】:2009-06-10 16:56:45
【问题描述】:
问题:
编写一个程序,将从键盘输入的 8 位二进制数转换为等效的格雷码二进制数,使用以下算法:
我正在学习汇编(8086,课程要求),但不知道该怎么做。
当我从键盘接收到每个字符(1 或 0)时,我会转换它吗?或者,我是读入整个 8 位二进制数,循环遍历它,边做边转换?
我来自 Perl/Java,因此想象它在汇编中的工作方式有点令人生畏。另外,我不确定上面算法中的符号是什么?
感谢您的帮助和批评!
【问题讨论】:
-
plus-in-a-circle 是异或 (XOR) 运算符。
-
你可以使用任何类型的库吗?因为否则获得输入将是一件非常痛苦的事情。
-
你会在旧操作系统中运行它吗,比如DOS?
-
不,我不这么认为。我已经通过以下方式完成此操作...数据段 PARLIST LABEL BYTE MAXLEN DB 40 ACTLEN DB ? inpchr DB 40 DUP(?) prmpt db '1 or 0: $', 0DH, 0AH, ends start: mov ax, data mov ds, ax mov es, ax mov bx, 1 mov cx, 0 Loop1: mov ah, 9引导 dx,提示 int 21H ; DOS键盘输入字符 mov ah, 0AH lea dx, PARLIST int 21H ;将输入字符移动到 al mov al, inpchr cmp al, 49 ;是输入 char == 1 jne Loop1 xor bx, 1 jmp Loop1 结束
-
那行得通:-{ 我猜 cmets 中没有代码!