我必须为以下内容编写一个微处理器8085汇编语言代码: -
6个国家的人口普查存储在从2400H / 0C20H开始的18个地点。第一个字节是代码编号(可以是00H到05H),接下来的2个字节是二进制国家/地区(因此每个国家占用3个位置)。我必须找到人口最多的国家,并将其国家代码编号存储在2500H / 0C90H位置。
我在互联网上搜索但是找不到我们如何比较8085中的两个2字节二进制数?如果你能提供帮助,我将非常感激。
答案 0 :(得分:0)
在8位CPU上,比较第一个(=最高)字节。如果它相等,则比较第二个(=较低)字节。比较32位或64位数字时,继续使用第三个字节,依此类推。当字节不相等时,你停止比较。
在Z80上,您还可以使用“SBC HL,DE”指令进行16位比较。但是这条指令在8085没有出现。
8位处理器的示例:
LOAD register1, [high byte of A]
LOAD register2, [high byte of B]
COMPARE register1, register2
JUMP_IF_EQUAL was_equal
// -- This is used for 32- and 64-bit numbers only --
LOAD register1, [second byte of A]
LOAD register2, [second byte of B]
COMPARE register1, register2
JUMP_IF_EQUAL was_equal
...
// -- --
LOAD register1, [low byte of A]
LOAD register2, [low byte of B]
COMPARE register1, register2
was_equal:
// Here the status flags are set as if a 16-bit UNSIGNED
// COMPARE had been done.
按照处理器的正确说明更换“LOAD”等说明!
签名号码比较更难!
答案 1 :(得分:0)
最后在朋友的帮助下解决了。这是: -
KickOff 2050H ;where to start the program
Org 2050H ;where to start the code
lxi sp,23ffH ;initializing stack pointer to 23ffH
lxi hl,0000H ;resulting population to 00 initially for comparison
shld 2501H ;store this poulation (00) to 2501h
lxi hl,2400h ;now load the address of start loc of data
mvi c,06h ;counter for 6 countries
loop:
mov d,m ;store the index of current country in d register
inx hl ;increase hl pair
mov b,m ;store the first byte of current population in b
inx hl
mov e,m ;store the second byte of current population in e
push hl ;push hl pair onto stack for later use
lxi hl,2501h
mov a,b
cmp m ;compare first byte (a-m) will set c=1 if m>a
jc next ;if carry do nothing
jz next1 ;if z=1, they are equal so we compare next two bytes
mov m,a ;if current greater than previous value then change values of 2501 and 2502 and also index
inx hl
mov m,e
mov a,d
sta 2500h ;ab kitna samjaye, kr lo khud se
jmp next
next1:
inx hl
mov a,e
cmp m
jc next
mov m,e
dcx hl
mov m,b
mov a,d
sta 2500h
next:
pop hl
inx hl
dcr c
jnz loop
hlt
谢谢大家的回答!! :)
答案 2 :(得分:0)
mvi a, 1st no.
mvi b, 2nd no.
cmp b
jc go
mov a,b
go: sta 0020h
hlt