〔习题1.19〕
英文大小写字母“D”和“d”的ASCII码各是什么?“回车(CR)”和“换行(LF)”的ASCII码各是什么?数码“0”、“空格(SP)”和“空操作(NUL)”的ASCII码各是什么? 〔解答〕
〔习题1.20〕
已知汉字“中”的国标区位码为54 48,请问它的国标码和机内码各是什么? 〔解答〕
第2章 微处理器指令系统
〔习题2.1〕
微处理器内部具有哪3个基本部分?8088分为哪两大功能部件?其各自的主要功能是什么?这种结构与8位CPU相比为什么能提高其性能? 〔解答〕 〔习题2.2〕
说明8088的8个8位和8个16位通用寄存器各是什么? 〔解答〕 〔习题2.3〕
什么是标志?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义。 〔解答〕 〔习题2.4〕
举例说明CF和OF标志的差异。 〔解答〕 〔习题2.5〕
什么是8088中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?1MB最多能分成多少个逻辑段?请将如下逻辑地址用物理地址表达:
? FFFFH:0 ? 40H:17H ? 2000H:4500H ? B821H:4567H 〔解答〕
?物理地址:物理存储单元具有的一个唯一的20位编号
?逻辑地址:在8088内部和用户编程时,所采用的“段地址:偏移地址”形式
?将逻辑地址中的段地址左移二进制4位(对应16进制是一位,即乘以16),加上偏移地址就得到20位物理地址
5
最多能分成1MB÷16B=220÷24=216个逻辑段,因为每隔16个字节单元就可
以开始一个逻辑段
? FFFFH:0=FFFF0H ? 40H:17H=00417H ? 2000H:4500H=24500H ? B821H:4567H=BC777H
〔习题2.6〕
8088有哪4种逻辑段,各种逻辑段分别是什么用途? 〔解答〕
?代码段(Code Segment)用来存放程序的指令序列。处理器利用CS : IP取得下一条要执行的指令
?堆栈段(Stack Segment)确定堆栈所在的主存区域。处理器利用SS : SP操作堆栈中的数据
?数据段(Data Segment)存放当前运行程序所用的数据。处理器利用DS : EA存取数据段中的数据
?附加段(Extra Segment)是附加的数据段,也用于数据的保存。处理器利用ES : EA存取数据段中的数据
〔习题2.7〕
什么是有效地址EA?8088的操作数如果在主存中,有哪些寻址方式可以存取它? 〔解答〕 〔习题2.8〕
已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12H、34H、56H、78H,[21200H]~[21203H]依次存放2AH、4CH、B7H、65H,说明下列每条指令执行完后AX寄存器的内容,以及源操作数的寻址方式?
? mov ax,1200h ? mov ax,bx ? mov ax,[1200h] ? mov ax,[bx] ? mov ax,[bx+1100h] ? mov ax,[bx+si] ? mov ax,[bx][si+1100h] 〔解答〕
? mov ax,1200h ;AX=1200H, 立即数寻址 ? mov ax,bx ; AX=0100H, 寄存器寻址 ? mov ax,[1200h] ;AX=4C2AH, 直接寻址
6
?1MB
? mov ax,[bx] ;AX=3412H, 寄存器间接寻址 ? mov ax,[bx+1100h] ;AX=4C2AH, 寄存器相对寻址 ? mov ax,[bx+si] ;AX=7856H, 基址变址寻址 ? mov ax,[bx][si+1100h] ;AX=65B7H,相对基址变址寻址
〔习题2.9〕
说明下面各条指令的具体错误原因 ? mov cx,dl ? mov ip,ax ? mov es,1234h ? mov es,ds ? mov al,300? mov [sp],ax ? mov ax,bx+di ? mov 20h,ah 〔解答〕
〔习题2.10〕
已知数字0~9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以table为首地址(设为200H)的连续区域中。请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。 lea bx,table mov al,8 xlat 〔解答〕
lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H
〔习题2.11〕
给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态: mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al 〔解答〕
mov al,89h ;AL=89H CF ZF SF OF PF add al,al ;AL=12H 1 0 0 1 1 add al,9dh ;AL=0AFH 0 0 1 0 1
7
cmp al,0bch ;AL=0AFH 1 sub al,al ;AL=00H 0 dec al ;AL=0FFH 0 inc al ;AL=00H 0 〔习题2.12〕
0 1 0 1 1 0 1 0 0 0 0 0 1 1 1 1
请分别用一条汇编语言指令完成如下功能:
? 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。
? 用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。
? 用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中。
? 用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中。
? 把数0A0H与AL寄存器的内容相加,并把结果送回AL中 〔解答〕
? 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器 add dx,bx
? 用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中
add al,[bx+si]
? 用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中
add [bx+0b2h],cx
? 用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中
add word ptr [0520h],3412h
? 把数0A0H与AL寄存器的内容相加,并把结果送回AL中 add al,0a0h 〔习题2.13〕
设X、Y、Z、V均为16位带符号数,分别装在X、Y、Z、V存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处。
mov ax,X imul Y mov cx,ax mox bx,dx mov ax,Z cwd
add cx,ax
8

