微机原理及应用教材课后习题及答案 下载本文

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