loop lp1
?2.25编写一个程序段:先提示输入数字“Input Number:0~9”,然后在下一行显示输入的数字,结束;如果不是键入了0~9数字,就提示错误“Error!”,继续等待输入数字。 答:
.model small .stack 100h .data
message db “Input Number : 0~9”,0dh,0ah, “$” error db “Error!”,0dh,0ah, “$” .code .startup
mov dx,offset message mov ah,09h int 21h
begin1: mov ah,01h int 21h
cmp al, “0”
jb err1 cmp al, “9” ja err1 mov dl,al mov ah,02h int 21h .exit
err1: mov offset error mov ah,09h int 21h jmp begin1 end
第三章
3.11请设置一个数据段,按照如下要求定义变量:
(1)my1b为字符串变量,表示字符串“Personal Computer”。 (2)my2b为用十进制数表示的字节变量,这个数的大小为20。 (3)my3b为用十六进制数表示的字节变量,这个数的大小为20。 (4)my4b为用二进制数表示的字节变量,这个数的大小为20。 (5)my5w为20个未赋值的字变量。 (6)my6c为100的符号常量。
(7)my7c为字符串常量,代替字符串“Personal Computer”。 答:
5 / 27
my1b db “Personal Computer”
my2b db 20 my3b db 14h
my4b db 00010100b my5w dw 20 dup(?) my6c equ 100
my7c equ < Personal Computer >
3.14设在某个程序中有如下片段,请写出每条传送指令执行后寄存器AX的内容: ;数据段 org 100h
varw dw 1234h,5678h varb db 3,4
vard dd 12345678h buff db 10 dup(?) mess db ‘hello’ ;代码段
mov ax,offset mess
mov ax,type buff+type mess+type vard
mov ax,sizeof varw+sizeof buff+sizeof mess mov ax,lengthof varw+lengthof vard 答:
6 / 27
offset mess = type vard = 4
0114h
offset varb = 0104h
type buff = 1;type mess = 1;7 / 27
sizeof varw = 4;sizeof buff = 10;
sizeof mess = 5
lengthof varw =2;lengthof vard = 1
3.15假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的具体错误原因。
⑴ mov byte ptr [bx],1000 (2) mov bx,offset myword[si] (3) cmp mybyte1, mybyte2 (4) mov mybyte1,al+1 (5) sub al,myword (6) jnz myword 答:
8 / 27