第1章 作业
要求: (1) 所有的题目做在作业本上(题目抄写在作业本上,不能只写题号);
(2) 下礼拜一(5.4日)上课时交作业;
(3) 请各班学习委员收作业本时按学号从小到大排列(作业本封面上要有
班级和学号)。
1. 80X86微处理器有哪些通用寄存器?各有什么用途?
2. 设字长n=16,将整数-1234H存放到内存中物理地址为20000H处,问-1234H将存贮在哪几个物理单元(字节),每个单元处的值是多少?
3. 右图是内存中物理地址为12340h处的几个单元中的值。(DS)=1230H, (SI)=41H, (CS)=1183H, (IP)=0B12H。
(1) DS:[SI]所指处的有符号数和无符号数(2个字节)分别是多少;(2) DS:[SI]所指处的有符号和无符号长
字(4个字节)所表示的数分别是多少 (用16进制数表示);(3)设下一条指令由3个字节组成,那么下一条
指令的机器码是多少?
物理地址
00h 01h 02h 08h 80h 12340h 12341h 12342h 12343h 12344h
4. 什么情况下会发生溢出?什么情况下会产生进位(借位)?执行指令“MOV AX, 4341H; ADD AH, AL”后CF、OF、ZF、SF是多少?
5. 设(EAX)=12345H,(EBX)=2345678H,(ECX)=89ABCDEFH, 执行完下面的指令后(EAX)=?(EBX)=?画出每一条指令执行后的堆栈示意图。 PUSH AX
PUSH BX PUSH ECX ADD SP, 1 POP EAX POP BX
6. 分析下面程序的执行结果
union { char A[9];
struct { short n1;
unsigned short n2; } b; long c; } a; void main() {
strcpy(a.A, “12345ABC”); //将字符串“12345ABC”拷贝到缓冲区a.A a.A[1] = 0x80;
printf(“%d %d %ld \\n”, a.b.n1, a.b.n2, a.c); //可以使用16进制给出结果 a.b.n2 *= -1;
printf(“%d %d %ld \\n”, a.b.n1, a.b.n2, a.c); //可以使用16进制给出结果 unsigned short *p = &a.b.n2; p[-1] = 0x6261; p[0] = 0x6463;
printf(“%s \\n”, a.A+1); }

