第一章汇编语言基础 1.1什么是汇编语言? 1.2汇编语言与机器语言的联系和区别? 1.3什么是真值、机器码、原码、反码、补码、ASC码? 1.4将下列二进制数转换为八进制和十六进制数: 10111101B01100010B11010110B011011011010111010B 1.5请将下列十进制数转换为十六进制数 19,35,543,7869,192,80 1.6请将下列十六进制数转换为十进制数。 2AH DCH 6B6H OFCADH 44FDH 1.7将下列带符号数用补码表示: 设n=8,-5FH,0F5H,-76H,-4CH,0FFH: n=16,-69ADH,-3E8DH,-5FH,-76H,F5H 1.8设以下各数均为有符号数的补码表示,请比较它们的大小 3456H和0BA52H,80H和79H,8000H和0 FFFFH,72H和82H 1.9如果将以上个对数均看做无符号数,请比较它们的大小 1.10说明数字和大小写字母的ASCl码的特点
第一章 汇编语言基础 1.1 什么是汇编语言? 1.2 汇编语言与机器语言的联系和区别? 1.3 什么是真值、机器码、原码、反码、补码、ASCII 码? 1.4 将下列二进制数转换为八进制和十六进制数: 10111101B 01100010B 11010110B 011011011010111010B 1.5 请将下列十进制数转换为十六进制数 19,35,543,7869,192,80 1.6 请将下列十六进制数转换为十进制数。 2AH DCH 6B6H 0FCADH 44FDH 1.7 将下列带符号数用补码表示: 设 n=8,‐5FH,0F5H,‐76H,‐4CH,0FFH; 设 n=16,‐69ADH,‐3E8DH,‐5FH,‐76H,F5H 1.8 设以下各数均为有符号数的补码表示,请比较它们的大小 3456H 和 0BA52H,80H 和 79H,8000H 和 0FFFFH,72H 和 82H 1.9 如果将以上个对数均看做无符号数,请比较它们的大小 1.10 说明数字和大小写字母的 ASCII 码的特点
第二章8086微处理器 2.1说明8086CPU的组成结构及其寄存器的组成 2.2数值加法器和地址加法器的区别? 2.3存储器地址的分段技术原理,以及寄存器的类型? 2.4存储器物理地址的生成方法,如何查看和修改段内存储单元的内容? 2.5求下列各数与62AOH的差,并根据结果设置标志位SF,ZF,CF,OF的值 (1)1234H(2)4231H(3)CFA0H(4)9D60H 2.6求下列各数与4AE0的差,并根据结果设置标志位SF,ZF,CF,OF的值 (1)1234H(2)5D90H(3)9090H(4)EA04H 2.7有两个16位字2E5CH和6A7BH分别存放在数据段的2000H和2003H的存储单元中,画 图表示出它们在存储器里的存放情况。 2.8存储器中数据存放如图所示,请读出30022H和30024H字节单元的内容,以及30021H 和30022字单元的内容。 地址 内容 30020 78 30021 56 30022 34 30023 12 30024 12 2.9请问段地址和偏移地址为3017:0004的存储单元的物理地址是多少?如果段地址偏移地 址变为3015:002A和3010:007A时,物理地址又是多少? 2.10一个16字长的数据区,它的起始地址为70A0H:DDF6,请写出这个数据区首末字单元 的物理地址。 2.11如果一个程序段开始执行前,(CS)=0B7F0H,(IP)=2B40H,试问该程序段的第一个字 单元的物理地址是什么? 2.12如果一个堆栈从地址1250:0000开始,它的最后一个字的位移地址为0100H,SP的内容
第二章 8086 微处理器 2.1 说明 8086CPU 的组成结构及其寄存器的组成 2.2 数值加法器和地址加法器的区别? 2.3 存储器地址的分段技术原理,以及寄存器的类型? 2.4 存储器物理地址的生成方法,如何查看和修改段内存储单元的内容? 2.5 求下列各数与 62A0H 的差,并根据结果设置标志位 SF,ZF,CF,OF 的值 (1)1234H (2)4231H (3)CFA0H (4)9D60H 2.6 求下列各数与 4AE0 的差,并根据结果设置标志位 SF,ZF,CF,OF 的值 (1)1234H (2)5D90H (3)9090H (4)EA04H 2.7 有两个 16 位字 2E5CH 和 6A7BH 分别存放在数据段的 2000H 和 2003H 的存储单元中,画 图表示出它们在存储器里的存放情况。 2.8 存储器中数据存放如图所示,请读出 30022H 和 30024H 字节单元的内容,以及 30021H 和 30022 字单元的内容。 内容 78 56 34 12 12 2.9 请问段地址和偏移地址为 3017:000A 的存储单元的物理地址是多少?如果段地址偏移地 址变为 3015:002A 和 3010:007A 时,物理地址又是多少? 2.10 一个 16 字长的数据区,它的起始地址为 70A0H:DDF6,请写出这个数据区首末字单元 的物理地址。 2.11 如果一个程序段开始执行前,(CS)=0B7F0H,(IP)=2B40H,试问该程序段的第一个字 单元的物理地址是什么? 2.12 如果一个堆栈从地址 1250:0000 开始,它的最后一个字的位移地址为 0100H,SP 的内容 地址 30020 30021 30022 30023 30024
为0052H,问 (1)栈顶地址是多少? (2)栈底地址是多少? (3)在SS中的段地址是多少? (4)存入数据3445后,SP的内容是多少? 2.13己知(SS)=0FFA0H,(SP)=00B0H,先执行两条把数据8057H和0F79H分别进栈的PUSH 指令,再执行一条POP指令。试画出堆栈区和SP的内容变化过程示意图(标出存储单元的 物理地址)
为 0052H,问 (1)栈顶地址是多少? (2)栈底地址是多少? (3)在 SS 中的段地址是多少? (4)存入数据 3445 后,SP 的内容是多少? 2.13 已知(SS)=0FFA0H,(SP)=00B0H,先执行两条把数据 8057H 和 0F79H 分别进栈的 PUSH 指令,再执行一条 POP 指令。试画出堆栈区和 SP 的内容变化过程示意图(标出存储单元的 物理地址)
第三章寻址方式 3.1分别指出下列指令中源操作数和目的操作数的寻址方式。 (1)MOV SI,1000 (2)MOV DI,[SI] (3)ADD AX,4[BX] (4)SUB AX,5[BX+DI] (5)MOV [DI+2],AX (6)MOV SI,[100o] (7)ADD [SI],SI (8)ADD AX,-7[BP+DI] 3.2现有(DS)=2000H,(BX=0100H,(SI=0002H,(20100)=12H,(20101)=34H,(20102)=56H, (20103)=78H,(21200)=2AH,(21201)=2BH,(21202)=2CH,(21203)=2DH,试说明下列各条指令执行 后AX寄存器的内容 (1)MOV AX,1200H (2)MOV AX,BX (3)MOV AX,[1200H (4)MOV AX,[BX] (5)MOV AX,1100[BX] (6)MOV AX,[BX][SI] (7)MOV AX,1100[BX][SI] 3.3在CS:0624单元内有一条二字节JMP SHORT NEXT指令,如其中位移量为(1)35H, (2)4CH,(3)0C2H,试问转向地址NEXT的值是多少? 3.4给定(IP)=2BC0H,(CS)=0200H,位移量D=5119H,(BX)=1200H,(DS)=212AH,(224A0) 0600H,(275B9)=098AH,试为以下的转移指令找出转移的偏移地址。 (1)段内直接寻址 (2)使用BX及寄存器间接寻址方式的段内间接寻址。 (3)使用BX及寄存器相对寻址方式的段内间接寻址。 3.5假设(EAX)=9823F456H,(ECX)=1F23491H,(BX)=348CH,(SI)=2000H,(D1)=4044H。 在DS段中从偏移地址4044H单元开始的4个字节单元中,依次存放的内容为92H,6DH, OA2H和4CH,试问下列各条指令执行完后目的地址及其中的内容是什么: (1)MOV [SI],EAX (2)MOV [BX],ECX (3)MOV EBX,[DI] (4)MOV EAX,ECX 3.6阅读下列程序,指出程序执行结果,并画出存储空间图。 DATA SEGMENT
第三章 寻址方式 3.1 分别指出下列指令中源操作数和目的操作数的寻址方式。 (1)MOV SI,1000 (2)MOV DI,[SI] (3)ADD AX,4[BX] (4)SUB AX,5[BX+DI] (5)MOV [DI+2],AX (6)MOV SI,[1000] (7)ADD [SI],SI (8)ADD AX,‐7[BP+DI] 3.2 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H, (20103)=78H,(21200)=2AH,(21201)=2BH,(21202)=2CH,(21203)=2DH,试说明下列各条指令执行 后 AX 寄存器的内容 (1)MOV AX,1200H (2)MOV AX,BX (3)MOV AX,[1200H] (4)MOV AX,[BX] (5)MOV AX,1100[BX] (6)MOV AX,[BX][SI] (7)MOV AX,1100[BX][SI] 3.3 在 CS:0624 单元内有一条二字节 JMP SHORT NEXT 指令,如其中位移量为(1)35H, (2)4CH,(3)0C2H,试问转向地址 NEXT 的值是多少? 3.4 给定(IP)=2BC0H,(CS)=0200H,位移量 D=5119H,(BX)=1200H,(DS)=212AH,(224A0) 0600H,(275B9)=098AH,试为以下的转移指令找出转移的偏移地址。 (1)段内直接寻址 (2)使用 BX 及寄存器间接寻址方式的段内间接寻址。 (3)使用 BX 及寄存器相对寻址方式的段内间接寻址。 3.5 假设(EAX)=9823F456H,(ECX)=1F23491H,(BX)=348CH,(SI)=2000H,(DI)=4044H。 在 DS 段中从偏移地址 4044H 单元开始的 4 个字节单元中,依次存放的内容为 92H,6DH, 0A2H 和 4CH,试问下列各条指令执行完后目的地址及其中的内容是什么: (1)MOV [SI],EAX (2)MOV [BX],ECX (3)MOV EBX,[DI] (4)MOV EAX,ECX 3.6 阅读下列程序,指出程序执行结果,并画出存储空间图。 DATA SEGMENT
W DB -128 X DB 127 Y DB-100 R DB0 Z DD 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK BEGIN:MOV AX,DATA MOV DS,AX MOV AL,X CBW MOV BX,AX MOV AL,W CBW SUB AX,BX MOV BL,10 IDIV BL MOV R,AH IMUL Y IMUL AX MOV WORD PTR Z,AX MOV WORD PTR Z+2,DX MOV AH,4CH INT 21H CODE ENDS END BEGIN
W DB -128 X DB 127 Y DB -100 R DB 0 Z DD 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK BEGIN: MOV AX,DATA MOV DS,AX MOV AL,X CBW MOV BX,AX MOV AL,W CBW SUB AX,BX MOV BL,10 IDIV BL MOV R,AH IMUL Y IMUL AX MOV WORD PTR Z,AX MOV WORD PTR Z+2,DX MOV AH,4CH INT 21H CODE ENDS END BEGIN
第四章汇编语言程序 4.1请开辟一个数据段DATA,依次定义以下变量。 (1)STR为一字符串变量,初值为:“WELCOME YOU!” (2)A为十六进制的字节变量,初值为40H (3)B为十进制的字节变量,初值为40 (4)C为二进制的字节变量,初值为01101010 (5)D为包含10个字节的变量,初值均为5 (6)E为包含3个字节的变量,初值分别为十进制的55,-100,8000 4.2己知以数据段中的数据为: DATA SEGMENT STR1DB0,1,2,3,4,5 STR2DB"012345" COUNT EQU 30 NUM DB 3 DUP(20) NUMA DW -10H,60H NUMB DW NUM NUMC DD NUM DATA ENDS 请按本章图4.1的方式画出该数据段中的数据存储空间图。 4.3请问变量的三个属性是什么?如果数据段中的数据如4.2题所示,请分别指出个变量的 段地址、偏移地址、以及各变量的初值,同时请问汇编语言定义变量时为什么可以省略变量 名? 4.4己知数据段中的数据如4.2题所示,请写出下列各语句执行后,相应寄存器中的内容, 并指出源操作数的寻址方式。 MOV BX.OFFSET STR1+3 MOV SI.OFFSET STR2-2 MOV CX,COUNT MOV DX,WORD PTR NUM MOV BP.NUMA+2 MOV AL,3[BX] MOV AH,[BX+SI+1] MOV CH,BYTE PTR NUMB+1 MOV AX.WORD PTR NUMC 4.5己知数据段中的数据如4.2题所示,晴改正下列语句中的错误,并说明原因。 (1)MOV AX,[STR1] (2)MOV BP,OFFSET STR2 MOV CX,[BP]
第四章 汇编语言程序 4.1 请开辟一个数据段 DATA,依次定义以下变量。 (1)STR 为一字符串变量,初值为:“WELCOME YOU!” (2) A 为十六进制的字节变量,初值为 40H (3)B 为十进制的字节变量,初值为 40 (4)C 为二进制的字节变量,初值为 01101010 (5)D 为包含 10 个字节的变量,初值均为 5 (6)E 为包含 3 个字节的变量,初值分别为十进制的 55,‐100,8000 4.2 已知以数据段中的数据为: DATA SEGMENT STR1 DB 0,1,2,3,4,5 STR2 DB “012345” COUNT EQU 30 NUM DB 3 DUP(20) NUMA DW ‐10H,60H NUMB DW NUM NUMC DD NUM DATA ENDS 请按本章图 4.1 的方式画出该数据段中的数据存储空间图。 4.3 请问变量的三个属性是什么?如果数据段中的数据如 4.2 题所示,请分别指出个变量的 段地址、偏移地址、以及各变量的初值,同时请问汇编语言定义变量时为什么可以省略变量 名? 4.4 已知数据段中的数据如 4.2 题所示,请写出下列各语句执行后,相应寄存器中的内容, 并指出源操作数的寻址方式。 MOV BX,OFFSET STR1+3 MOV SI,OFFSET STR2‐2 MOV CX,COUNT MOV DX,WORD PTR NUM MOV BP,NUMA+2 MOV AL,3[BX] MOV AH,[BX+SI+1] MOV CH,BYTE PTR NUMB+1 MOV AX,WORD PTR NUMC 4.5 已知数据段中的数据如 4.2 题所示,晴改正下列语句中的错误,并说明原因。 (1)MOV AX,[STR1] (2)MOV BP,OFFSET STR2 MOV CX,[BP]
(3)MOV SI,OFFSET NUM MOV[SI,"A” (4)MOV DL.NUMA+2 (5)MOV DI,CH (6)MOV BX.OFESET STR1 MOV DH,BX+3 (7)INC COUNT (8)MOV NUM,STR1 (9)LEA NUMB,NUMA (10)MOV AX,NUMA MOV DX,0 DIV NUM (11)MOV AX,[SI],[DI] (12)MOV NUMB,ES:AX (13)MOV CS,AX (14)MOV BYTE PTR [BX],1000H (15)MOV BX,OFFSET COUNT[SI] 4.6根据以下要求写出相应的汇编指令语言。 (1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中: (2)用寄存器BX和S1的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加, 并把结果送到AL寄存器中: (3)用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加, 并把结果送回存储单元中: (4)用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送 回该存储单元中: (5)把数OB5H与(AL)相加,并把结果送回AL中。 4.7变量DATAX和变量DATAY的定义如下: DATAX DW 5108H DW 1236H DATAY DW 237AH DW 4B52H 请按下列要求写出指令序列: (1)DATAX和DATAY两个字数据相加,和存放在DATAY中; (2)DATAX和DATAY两个双字数据相加,和存放在从DATAY开始的字单元中: (3)解释下列指令的作用: STC MOV BX,DATAX ADC BX.DATAY (4)DATAX和DATAY两个字数据相乘(用MUL): (5)DATAX和DATAY两个双字数据相乘(用MUL): (6)DATAX除以23(用DIV): (7)DATAX双字除以DATAY(用DIV)
(3)MOV SI,OFFSET NUM MOV [SI],”A” (4)MOV DL,NUMA+2 (5)MOV DI,CH (6)MOV BX,OFFSET STR1 MOV DH,BX+3 (7)INC COUNT (8)MOV NUM,STR1 (9)LEA NUMB,NUMA (10)MOV AX,NUMA MOV DX,0 DIV NUM (11)MOV AX,[SI],[DI] (12)MOV NUMB,ES:AX (13)MOV CS,AX (14)MOV BYTE PTR [BX],1000H (15)MOV BX,OFFSET COUNT[SI] 4.6 根据以下要求写出相应的汇编指令语言。 (1)把 BX 寄存器和 DX 寄存器的内容相加,结果存入 DX 寄存器中; (2)用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加, 并把结果送到 AL 寄存器中; (3)用寄存器 BX 和位移量 0B2H 的寄存器相对寻址方式把存储器中的一个字和(CX)相加, 并把结果送回存储单元中; (4)用位移量为 0524H 的直接寻址方式把存储器中的一个字与数 2A59H 相加,并把结果送 回该存储单元中; (5)把数 0B5H 与(AL)相加,并把结果送回 AL 中。 4.7 变量 DATAX 和变量 DATAY 的定义如下: DATAX DW 5108H DW 1236H DATAY DW 237AH DW 4B52H 请按下列要求写出指令序列: (1)DATAX 和 DATAY 两个字数据相加,和存放在 DATAY 中; (2)DATAX 和 DATAY 两个双字数据相加,和存放在从 DATAY 开始的字单元中; (3)解释下列指令的作用: STC MOV BX,DATAX ADC BX,DATAY (4)DATAX 和 DATAY 两个字数据相乘(用 MUL); (5)DATAX 和 DATAY 两个双字数据相乘(用 MUL); (6)DATAX 除以 23(用 DIV); (7)DATAX 双字除以 DATAY(用 DIV)
4.8试分析下面的程序段完成什么功能? MOV CL,04 SHL DX,CL MOV BX,AH SHL AX,CL SHR BL,CL OR DLBL 4.9有一段程序如下: MOV CX,10 LEA SI,BUF1 LEA DI,BUF2 REP MOVSB (1)这段程序完成的功能是什么? (2)REP和OVSB哪条指令先执行? (3)MOVSB第一次执行时,应完成的准备工作? (4)REP指令第一次执行呢? 4.10比较AX,BX,CX中带符号数的大小,将最大的数放在AX中,试编程序段。 4.11己知存储区中有一个首地址为ARRAY的100个字数组,要求编写程序段实现数组中的 每个元素加1. 4.12阅读下列程序,并指出此程序执行后,屏幕所输出地内容。 DATA SEGMENT DB-18 Y DB DATA ENDS CODE SEGMENT ASSUME CS:CODE.DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,X CMP AL,0 JGE BIGE MOV AL,OFFH JMP OUTY BIGE:JE OUTY MOV AL,1 OUTY:MOV Y,AL MOV AH,4CH INT 21H CODE ENDS
4.8 试分析下面的程序段完成什么功能? MOV CL,04 SHL DX,CL MOV BX,AH SHL AX,CL SHR BL,CL OR DL,BL 4.9 有一段程序如下: MOV CX,10 LEA SI,BUF1 LEA DI,BUF2 REP MOVSB (1)这段程序完成的功能是什么? (2)REP 和 MOVSB 哪条指令先执行? (3)MOVSB 第一次执行时,应完成的准备工作? (4)REP 指令第一次执行呢? 4.10 比较 AX,BX,CX 中带符号数的大小,将最大的数放在 AX 中,试编程序段。 4.11 已知存储区中有一个首地址为 ARRAY 的 100 个字数组,要求编写程序段实现数组中的 每个元素加 1. 4.12 阅读下列程序,并指出此程序执行后,屏幕所输出地内容。 DATA SEGMENT X DB -18 Y DB ? DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX MOV AL, X CMP AL, 0 JGE BIGE MOV AL, 0FFH JMP OUTY BIGE:JE OUTY MOV AL, 1 OUTY:MOV Y, AL MOV AH, 4CH INT 21H CODE ENDS