0

我需要显示矩阵(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
4

1 回答 1

3

这取决于您所说的“两个第一位设置”是什么意思。如果您正在寻找两个最低位,您编写的代码可以正常工作。即,设置位 0 和位 1。您在注释 (3, 6, 7) 中给出的示例可能会输出 3 和 7,因为它们设置了最低位的两位。那是:

3 = 00000011 binary
6 = 00000110 binary
7 = 00000111 binary

所以只有 3 和 7 满足您在代码中编写的条件。

您似乎将“两个第一位”解释为表示该数字在任何前导零之后以二进制序列“11”开头。如果这确实是您想要的解释,那么您必须使用左移指令,直到高位设置为 1,然后检查下一个最高位是否设置为 1。

于 2010-12-06T22:16:53.153 回答