这个汇编语言题目可以用以下的代码来实现:
- .MODEL SMALL
 
- .STACK 100h
 
- .DATA
 
-     num DW -1234h, -5678h    ; 定义存放两个带符号的字数据的num数组
 
-     flag DW ?
 
- .CODE
 
- MAIN PROC
 
-     MOV AX, @DATA           ; 初始化数据段寄存器
 
-     MOV DS, AX
 
 
-     MOV BX, OFFSET num      ; 将 BX 寄存器指向 num 数组
 
-     MOV CX, 2               ; 数组中有 2 个元素
 
-     MOV DX, 0               ; 清空 DX 寄存器
 
 
-     L1:
 
-         MOV AX, [BX]        ; 读取当前数组元素的值到 AX 中
 
-         AND AX, 8000h       ; 判断该元素是否为负数(通过检查符号位实现)
 
-         JZ SAME_SIGN        ; 如果是正数,跳转到 SAME_SIGN 标签
 
-         OR DX, 0001h        ; 否则将 DX 寄存器的最低位设为 1
 
-         JMP END_L1          ; 跳转到 END_L1 标签
 
-     SAME_SIGN:
 
-         AND DX, 1110b       ; 将 DX 寄存器中的最低位置为 0
 
-         MOV BX, BX+2        ; 将 BX 寄存器移动到下一个数组元素的位置
 
-         LOOP L1             ; 继续循环处理数组中的下一个元素
 
-     END_L1:
 
 
-     MOV flag, DX            ; 将 DX 寄存器的结果保存到 flag 变量中
 
-     MOV AH, 4Ch            ; 设置退出程序的中断号
 
-     INT 21h                ; 调用 DOS 系统中断,返回操作系统
 
- MAIN ENDP
 
- END MAIN
 
上面的代码定义了包含两个带符号字数据的 num 数组,使用循环检查这两个数据是否同号(即符号位是否相同),如果相同则将 flag 寄存器置为 0,否则将其置为 1。
关于书籍,我推荐你阅读这些:
1. 《汇编语言(王爽版)》:这本书是经典的汇编语言教材,适合入门学习,并且给出了大量例子和习题。
2. x86 汇编语言入门教程:这是一系列网络教程,从基础概念开始,逐步介绍x86汇编语言的各个方面。
3. NASM官方文档:如果你使用的是NASM汇编器,可以参考官方文档,里面有详细的指令说明和示例。
4. 汇编语言在线教程:有一些在线资源提供了汇编语言的学习教程和实践项目,你可以通过搜索来找到合适的资源。
希望这个答案能够帮助到你。如果还有其他问题,请随时提出。