【问题标题】:Storing most significant/least significant nibble in registers在寄存器中存储最重要/最不重要的半字节
【发布时间】:2018-09-16 18:37:40
【问题描述】:

我对汇编编程非常陌生,但我在分配作业时遇到了一些问题。我正在尝试将十六进制值(94h)存储在 AL 中,并将最高有效半字节(MSN)存储在 DH 中,将最低有效半字节(LSN)存储在 DL 中。我知道我可以使用左移和右移(4 位)来隔离 MSN 和 LSN,但我不知道如何将结果存储在 DL 和 DH 中。

例如: 如果 AL 包含数字 94h 1)我想在DH中存储39h(字符'9'的ASCII码) 2)我想在DL中存储34h(字符'4'的ASCII码) 3)我需要显示字符‘9’、‘4’、‘h’、‘换行’和‘回车’。

MOV AL, 94h ; AL <-- 94h / 1001 0100
MOV CL, 4
SHR AL, 4 ; AL = 0000 1001 = 9 
; How do i store this into DH

在这一点上,我被难住了..

【问题讨论】:

  • 嗯...mov dh, al
  • 另外你想在移动它之前移动它,这样你就不会丢失另一半。
  • 如何让 4 进入 DL?

标签: assembly


【解决方案1】:

众多解决方案中的一个:

mov al, 94h
mov dh, al
shr dx, 4
shr dl, 4

【讨论】:

  • 那么如何使用 WriteChar 在控制台上打印 DH(09h) 和 DL(04h)?
  • @MichaelL:感谢您的积分。我可以猜到整个任务是什么样的,以及您将面临的其他问题。在我为你做完作业之前,要解决你甚至不知道的所有问题需要很长时间。首先尝试创建自己的程序,然后询问您是否真的不知道该怎么做。请看stackoverflow.com/help/mcve
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
  • 1970-01-01
相关资源
最近更新 更多