计算机科学与技术,汇编语言程序设计,新版,答案,钱晓捷
mov dx,offset array2 ; 回车换行
mov ah,09h
int 21h
mov bx,offset array1
again: mov al,[bx]
cmp al,'$'
jz done
cmp al,'a' ; 小于a和大于z的字符不是小写字母
jb next
cmp al,'z'
ja next
sub al,20h ; 在a和z之间的字符才是小写字母,转换为大写
mov [bx],al ; 保存到原位置
next: inc bx
jmp again
done: mov dx,offset array1
mov ah,09h
int 21h
mov ax,4c00h
int 21h
code ends
end start
3.8、区分下列概念:
(1)变量和标号 (2)数值表达式和地址表达式 (3)符号常量和字符串常量
3.9; 假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的错误原因。
(1) mov byte ptr [bx],1000 ;1000超出了一个字节范围
(2) mov bx,offset myword[si];寄存器的值只有程序执行时才能确定, ;而offset是汇编过程计算偏移地址,故无法确定
;可以改为lea bx,myword[si]
(3) cmp mybyte1,mybyte2 ;两个都是存储单元,指令不允许
(4) mov al,mybyte1+mybyte2 ;变量值只有执行时才确定,汇编过程不能计算
(5) sub al,myword ;字节量AL与字量myword,类型不匹配
(6) jnz myword ;Jcc指令只有相对寻址方式,不支持间接寻址方式