我需要显示矩阵(3x3)中的所有数字,其中数字设置了两个第一位。 我认为我离解决方案很近,但是出了点问题,你能指出什么是错的吗?
.model small
.stack 100h
.data
n equ 3
a dw n*n dup(?)
.code
extrn write:near
extrn read:near
begin:
mov ax,@data
mov ds,ax
mov cx,n*n
mov si,0
m1:
call read
mov a[si],ax
add si,2
loop m1
mov si,0
mov cx,n*n
m2:
mov bx, a[si]
test bx,1
jz net
test bx,2
jz net
mov ax,a[si]
call write
net:
add si,2
loop m2
mov ah,4ch
int 21h
end begin
答案 0 :(得分:3)
这取决于“两个第一位设置”的含义。如果您正在寻找两个最低位,那么您编写的代码就可以正常工作。也就是说,设置位0和位1。您在注释(3,6,7)中给出的示例可能输出3和7,因为它们设置了最低位的两位。那就是:
3 = 00000011 binary
6 = 00000110 binary
7 = 00000111 binary
因此,只有3和7符合您在代码中编写的条件。
您似乎正在解释“两个第一位”,表示该数字以任何前导零后的二进制序列“11”开头。如果那真的是你想要的解释,那么你必须使用左移位指令,直到高位设置为1,然后检查下一个最高位是否设置为1.