如果它们相等,大于或小于彼此,我如何比较两个端口位?

时间:2016-04-28 06:31:16

标签: assembly 8051

我正在研究8051汇编程序,我想知道一个命令,它可以帮助我比较两个端口位并查找它们是否相等,所以我搜索它并发现CJNE可能有用并尝试过把它放在一个程序中如下...我不确定我是否正在走正确的道路可能一个Xnor命令更好但我找不到它,我无法测试它出于某种原因。

/etc/mysql/conf.d

如果我想知道一个端口位是大于还是小于其他位,我可以使用ANL命令吗?

2 个答案:

答案 0 :(得分:1)

不是8051的专家,但是在比较之后,如果它等于(分支EQ或NE)则设置零标志,如果它更大则设置进位标志(CS或CC用于设置或清除) )。在CJNE之后(比较并跳转,如果不相等),你可以用JC [进位组的目的地 - 即>]检查进位标志。无需进行第二次比较 - 标志仍将从第一次开始设置。

CJNE  R0,#00H,NOTEQUAL
; equal code goes here, then branch out
NOTEQUAL:
JC GREATER
; less than code goes here, then branch out
GREATER:
; greater code goes here

JNC是没有设置进位标志的指令 - 即它已经小于或等于但是你已经被淘汰了相等所以它会小于。

答案 1 :(得分:0)

这是一种做法。它绝不是循环或代码有效,但它符合您的要求。

假设您想要比较P1.0和P2.0是否与以下结果相同。 (P3.0,P3.1和P3.2是结果指标)

P1.0 = P2.0,设置P3.0否则清除

P1.0> P2.0,设置P3.1否则清除

P1.0 = P2.0 = 0,设置P3.2否则清除

create_table "order_details", force: true do |t|
  t.integer  "order_id"
  t.integer  "product_id"
  t.integer  "quantity"
  t.integer  "price"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
end

create_table "orders", force: true do |t|
 t.integer "user_id"
 t.date    "date"
end

add_index "orders", ["user_id"], name: "index_orders_on_user_id", using: :btree

create_table "orders_products", id: false, force: true do |t|
  t.integer "order_id"
  t.integer "product_id"
end

create_table "products", force: true do |t|
  t.string   "product_name"
  t.integer  "product_price"
  t.datetime "created_at",       null: false
  t.datetime "updated_at",       null: false
  t.boolean  "available_status"
  t.string   "product_type"
end