计算机科学与技术,汇编语言程序设计,新版,答案,钱晓捷
mov dh,al ;存入dh寄..
(3) 编写一个程序段,在DX高4位全为0时,使AX = 0;否则使AX = -1。 test dx,0f000h
jz zero
mov ax,-1
jmp done
zero: mov ax,0
done: ret
(4) 有两个64位数值,按“小端方式”存放在两个缓冲区buffer1和buffer2中,编写程序段完成buffer1-buffer2功能。
lea bx,buffer1
lea dx,buffer2
mov cx,8 ;8个字节
xor si,si ;si=0
clc ;CF=0
(5) 假设从B800h : 0开始存放有100个16位无符号数,编程求它们的和,并把32位的和保存在DX.AX中。
mov ax,0b800h
mov ds,ax ;段地址
xor si,si ;地址偏移量si=0
xor dx,dx ;和的高字dx=0
mov cx,99 ;加的次数
mov ax,[si] ;第一个数
again: inc si ;指向下一个字单元
inc si
add ax,[si] ;加下一个数
jnc noc ;无进位转
inc dx ;有进位dx=dx+1
noc: dec cx ;次数-1
jnz cx,again ;非0继续加
ret
(6) 已知字符串string包含有32KB内容,将其中的 $ 符号替换成空格。
mov si,offset string
mov cx,8000h ;32k=2^15=8000h
again: cmp [si],’$’
jnz next