-
BUF 缓冲区中 100 个字的有符号数用正负分开,发送到同一数据段的 BUF1 和 BUF2 两个缓冲区。
datas segment
在此处输入数据细分市场。
buf dw 12,-5,4,-3,8,-9,20,-77 ;根据需要设置。
count equ ($buf)/2
buf1 dw count dup (?保存正数。
buf2 dw count dup (?负数。
datas ends
codes segment
assume cs:codes,ds:datas
start:
mov ax,datas
mov ds,ax
mov es,ax
lea si,buf
lea di,buf1
lea bx,buf2
mov dl,0 ;标志,0 表示 DI 指向 buf1,bx 指向 buf2; 0ffh 表示 bx 指向 buf1,di 指向 buf2
在此处输入段落。
mov cx,count
l1:lodsw ;(ax)<-ds:si)
mov dh,0 ;标志值。
test ax,8000h
jz l2 ;最高数字是 0,一个正数,将 dl 与 0 进行比较,看看它是否指向 buf1
mov dh,0ffh ;最高数字是 1,负数,将 DL 与 0ffh 进行比较,看看它是否指向 buf2
l2: cmp dl,dh ;看标志,di是否指向对应的数组。
je l3xchg bx,di ;如果 di 没有指向相应的数组,则交换 bx 和 di
not dl ;更改徽标。
l3: stosw ;(es:di)<-ax)
loop l1
mov ah,4ch
int 21h
codes ends
end start
-
程序不是很长,你可以试着自己写下来。
如果我不能写的话,我只想谈谈一些方法。
让我们再谈谈它。
首先,数据段定义了三个没有多数的缓冲区。
BUF12缓冲液的长度应大于或等于BUF的长度。
其次,它是比较和跳转语句的集合。
你可以写两个比较,一个是正数,另一个是负数,它们仅在最后一次跳跃中有所不同。
使用两个周期来解释(正和负)。
比较简单,类似**也只是复制一下。
-
(1)B是对的。
2)将Al中的无符号数推入堆栈,以下方法不正确
3)使用寄存器c作为地址间寄存器,寄存器间接地址的操作数系统默认不在堆栈段中。
4)将两个无符号数字相加,判断结果是否由标志位c携带。
5) 说明"add byte ptr [ebx], byte ptr [bp]"错误原因是 A
6) 知道源操作数在数据段中,语句“mov ax,[bp+bx]”中存在语法错误,现在更正为以下四种形式,但只有 c 是正确的。
7)设var为单词变量,a为符号常量,如果以下四个语句有错误,则此错误语句为d
8)使用除法指令进行分词时,商应放在寄存器d中。
9) 已知 (ax)=0f0eh, cf=0,执行以下命令后,(ax) 和 cf 为 d
10) 如果您知道 (ax)=a、(bx)=b、a 和 b 都是无符号数字,请选择合适的转账指令,使 (ax) > (bx)。
在转弯时执行。
cmp ax,bx
_a___l
a) ja
-
;Push、pop 只会影响堆栈内的内容。 其他人不会。
-
计算机内存是以字节为单位寻址的,也就是说,一个内存地址对应的单元中只能存储一个字节,当存储一个字(16位)时,需要占用两个字节,然后高字节存储在高地址单元中,低字节存储在低地址单元中, 如果存储单元从前到后,地址从低到高,则字存储在前面的低位和后面的高位。
所以它应该是这样的:
4000:0000h)=33h
4000:0001h)=22h
4000:0002h)=44h
4000:0003h)=55h
答案是B
一直以来,北京对外国学生的要求都很高,除非能把户口转到北京郊区,但现在时间不允许。 文化课程成绩400多分,只能说是一般,两所学院没有竞争优势,除非专业成绩是中上层。 在这种情况下,在北京把自己吊在树上是不明智的。 >>>More
人的性格不是天生的,一般是由环境造成的。 内向的人多与人交往是件好事,而这个社会上能成功的内向者很少。 >>>More