汇编语言 (王爽)第三版检测点答案(带目录)

合集下载

汇编语言实验答案 (王爽)

汇编语言实验答案 (王爽)

汇编语言答案检测点1.1(第8页)(1)13(2)1024,0,1023(3)8192,1024(4)2^30,2^20,2^10(5)64,1,16,4(6)1,1,2,2,4(7)512,256(8)二进制注意:1.第4题中的符号'^'指求幂运算(如:2^30指2的30次方)检测点2.1(第18页)----------------------(1)写出每条汇编指令执行后相关寄存器中的值。

第一空:F4A3H第二空:31A3H第三空:3123H第四空:6246H第五空:826CH第六空:6246H第七空:826CH第八空:04D8H第九空:0482H第十空:6C82H第十一空:D882H第十二空:D888H第十三空:D810H第十四空:6246H(2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。

解答如下:mov ax,2add ax,axadd ax,axadd ax,ax检测点2.2(第23页)----------------------(1)00010H,1000FH(2)1001H,2000H第2题说明:因为段的起始地址要为16的倍数。

所以当段地址小于1001H或大于2000H时CPU都无法寻到。

检测点2.3(第33页)答:CPU修改了4次IP的值。

第1次:执行完mov ax,bx后第2次:执行完sub ax,ax后第3次:读入jmp ax后第4次:执行完jmp ax后最后IP的值为0实验1查看CPU和内存,用机器指令和汇编指令编程(第33页)-----------------------------------------------------1.预备知识:Debug的使用<此部分略>2.实验任务(第43页)(1)<此部分略>(2)<此部分略>(3)通过DEBUG中的D命令查看到主板的生产日期[以月、日、年,分隔符为'/'的格式]存储在内存ffff:0005~ffff:000C(共8个字节单元中)处。

汇编语言第3版答案

汇编语言第3版答案

汇编语言第3版答案【篇一:汇编语言习题答案 (3)】一、选择题(四选一)1.表示一条处理器指令所在存储单元的符号地址是a 变量b 常量c 标号d 偏移量2.汇编语言中的变量有多种类型属性,但错误的类型是a 字节型byteb 字符型charc 字型wordd 双字型dword3.执行mov bx,seg var指令,bx得到变量var的。

a 物理地址b 段地址c 偏移地址d 内容4.masm语句中,采用a 逗号b 分号c 冒号d 空格5.欲设定从偏移地址100h开始安排程序,可使用a org 100hb start=100hc start db 100hd start equ 100h6.与“mov bx,offset var”指令等效的指令是a mov bx,varb 1ds bx,varc les bx,vard 1ea bx,var.7.下条语句buf db l0 dup(3 dup(?,10),3,10)汇编后,变量buf占有的存储单元字节数是 b 。

a 100b 80c 40d 208.数据定义语句“numl dw(12 or 6 and 2) ge 0eh”,定义的num1单元的内容是。

a 0b 0ffffhc 1d 0ffh9.要求将a、b两个字符的ascii码41h和42h顺序存放在连续两个字节存储单元中,可选用的语句是 a 。

a db`ab'b dw `ab'c db 0abhd dw 0abh10.在汇编语言程序中,对end语句叙述正确的是a end语句是一可执行语句b end语句表示程序执行到此结束c end语句表示源程序到此结束d end语句在汇编后要产生机器码11.下面的数据传送指令中,错误的操作是a mov ss:[bx+di],byte ptr 10hb mov dx,l000hc mov word ptr[bx],1000hd mov ds,2000h12.下面指令执行后,变量dab中的内容是daw dw 2a05hdab db 0fah?mov al,byte ptr dawsub dab,ala 0dahb 0fahc 0f5hd 0d0h13.根据下面的语句序列,ax寄存器的内容是。

汇编语言(王爽)_第二版_课后题全_答案15

汇编语言(王爽)_第二版_课后题全_答案15

AX=00E6 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=0124 NV UP EI PL NZ AC PE CY0DB4:0124 8A1E0C00 MOV BL,[000C] DS:000C=26-tAX=00E6 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=0128 NV UP EI PL NZ AC PE CY0DB4:0128 00D8 ADD AL,BL-tAX=000C BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=012A NV UP EI PL NZ NA PE CY0DB4:012A C6061799FF MOV BYTE PTR [9917],FF DS:9917=9A-q检测点3.1(2)内存中的情况如图3.6所示各寄存器的初始值:cs=2000h,ip=0,ds=1000h,ax=0,bx=0;①写出CPU执行的指令序列(用汇编指令写出)。

②写出CPU执行每条指令后,CS、IP和相关寄存器的数值。

③再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?图3.6内存情况示意检测点3.2(1)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH 中。

汇编语言(王爽第三版)检测点

汇编语言(王爽第三版)检测点

汇编语⾔(王爽第三版)检测点这本书购于2015.11.30,我⼤概从2016.3⽉开始读,历时⼤概三个⽉,我们学校开《微机原理与汇编语⾔》这门课,不过让⼈感觉很不爽,课本⼀开始就丢给你⼀堆东西,意欲让你记住这⼀⼤堆东西,然后开始编程,我对编程语⾔的学习⽅⾯要求⽐较⾼,所以开始读这本王爽⽼师写的汇编语⾔,⽬前为⽌,这本书给我的感觉就是,你能学到很多底层的东西,尤其是像键盘的读写原理,屏幕的显⽰,特别是对内存的操作和管理,不像课本上给你⼀个中断让你就能显⽰字符之类的,它会⼀步⼀步教你怎么把要显⽰的东西写到显存⾥⾯,这本书显得⽐较浅显易懂,让⼈感觉不错,特别是读了这本书再去看那些难度较⾼的汇编代码及微机原理,效率会⾼很多,下⾯是我读这本书的过程中对书中检测点的解答,仅代表个⼈观点。

第⼀章检测点1.11) 13 (8kb = 8 * 1024 = 2^13) 2) 1024010233) 8*10241024 (1 byte = 8 bit,计算机以byte为存储单位)4) 1024^31024^210245) 2^612^42^2 (kb = 2^10 Mb = 2^20 Gb = 2^30)6) 112247) 512256 (8086的寄存器为16位寄存器,⼀次可以读取两个字节,80386为32位寄存器)8) ⼆进制第⼆章检测点2.11)AX = F4A3hAX = 31A3hAX = 3123hAX = 6246hBX = 826ChCX = 6246hAX = 826ChAX = 04D8hAX = 0482hAX = 6C82hAX = D882hAX = D888hAX = D810hAX = 6246h2)mov ax,2add ax,axadd ax,axadd ax,ax检测点2.21)00010h 1000fh(0001h+0000h 0001h+ffffh)2)1001h 2000h(偏移地址的范围为0000-ffff,内存单元=段地址*16+偏移地址,当偏移地址最⼩时,段地址最⼤,偏移地址最⼤时,段地址最⼩)检测点2.34次修改IP,最后IP为0第三章检测点3.11)mov ax,1mov ds,axmov ax,[1000] AX = 2662hmov bx,[1001] BX = E626hmov ax,bx AX = E626hmov ax,[0000] AX = 2662hmov bx,[0002] BX = D6E6hadd ax,bx AX = FD48hadd ax,[0004] AX = 2C14hmov ax,0 AX = 0000hmov al,[0002] AX = 00E6hmov bx,0 BX = 0000hmov bl,[000C] BX = 0026hadd al,bl AX = 000Ch2)CS = 2000h,IP = 0,DS = 1000hmov ax,6622h AX = 6622hjmp 0ff0:0100h CS = 0ff0 IP = 0100hmov ax,2000h AX = 2000hmov ds,ax DS = 2000hmov ax,[0008] AX = C389hmov ax,[0002] AX = EA66hmov ax,6622h AX = 6622h数据和程序表达上没有区别,只跟存储的地⽅有关,存在数据段中即为数据,存在程序段中就是程序检测点3.21)mov ax,2000hmov ss,axmov sp,10h2)mov ax,1000hmov ss,axmov sp,0第六章检测点6.11)mov cs:[bx],ax2)cs26或1ahpop cs:[bx]第九章检测点9.11)db 8 dup (0)2)offset startcs3)CS = 0006h IP = 00BE检测点9.2mov cl,[bx]mov ch,0jcxz okinc bx检测点9.3inc cx(因为loop s执⾏时是先将cx减⼀再与0⽐较)第⼗章检测点10.110000000检测点10.2ax = 3检测点10.3ax = 1006检测点10.4ax = 9(call ax时将IPpush到栈中,也就是push 3)检测点10.51)ax = 32)ax = 0001 bx = 0000第⼗⼀章检测点11.111011011011000001001000011000110010000100110111 1 0 1 11 0 0 0 01 0 0 0 00 1 1 0 1检测点11.31)jna s0jna s02)jb s0jb s0检测点11.4ax = 0871h检测点12.11)039D:00162)0000:[4N]0000:[4N+2]检测点13.1assume cs:code,ds:datadata segmentdb 'conversation',0data endscode segmentstart:mov ax,csmov ds,axmov si,offset showmov ax,0mov es,axmov di,200hmov cx,offset showend-offset showcldrep movsbmov ax,0mov es,axmov word ptr es:[7ch*4],200hmov word ptr es:[7ch*4+2],0mov ax,datamov ds,axmov si,0mov ax,0b800hmov es,axmov di,12*160s:cmp byte ptr [si],0je okmov al,[si]mov es:[di],almov al,2mov es:[di+1],alinc siadd di,2mov bx,offset s-offset okint 7chok:mov ax,4c00hint 21hshow:push bpmov bp,spadd [bp+2],bxpop bpiretshowend:nopcode endsend start检测点13.21)错误,不能向BIOS中写程序2)错误,19h中断在操作系统以前,⽽DOS由操作系统控制即在操作系统以后1)mov al,2out 70h,alin al,71h2)mov al,0out 71h,almov al,2in 70h,al检测点14.2在不考虑溢出的情况下:mov ax,__mov bx,axshl bx,1mov cl,3shl ax,cladd ax,bx第⼗五章检测点15.11)pushfcall dword ptr ds:[0]2)在中断向量表中设置新的int9中断⼊⼝地址的时候不让其发⽣中断,即climov word ptr es:[9*4],offset int9mov word ptr es:[9*4+2],cssti恢复中断向量表int9的源地址时同理:clipush ds:[0]pop es:[9*4]push ds:[2]pop es:[9*4+2]sti第⼗六章检测点16.1a[si]bb1检测点16.2mov ax,datamov es,ax第⼗七章检测点17.1IF = 1 DI(disable interupt)IF = 0 EI(enable interupt)当执⾏int16中断时是从缓冲区中读出字符,若缓冲区为空,则int16应该可以响应int9的中断,故IF不⼀定为1。

汇编语言王爽第三版检测点答案带目录

汇编语言王爽第三版检测点答案带目录

汇编语言王爽第三版检测点答案带目录在学习汇编语言的过程中,王爽老师的《汇编语言(第三版)》无疑是一本备受推崇的经典教材。

而对于学习者来说,检测点的答案能够帮助我们更好地巩固知识,查漏补缺。

接下来,我将为大家详细呈现这本教材中各个章节检测点的答案,并附上清晰的目录,方便大家查阅和学习。

第一章基础知识检测点 11(1)1 个 CPU 的寻址能力为 8KB,那么它的地址总线的宽度为。

答案:13 位。

因为 8KB = 8×1024 = 2^13B,所以地址总线的宽度为 13 位。

检测点 12(1)8086 CPU 有根数据总线。

答案:16 根。

(2)8086 CPU 有根地址总线。

答案:20 根。

检测点 13(1)内存地址空间的大小受的位数决定。

答案:地址总线。

(2)8086 CPU 的地址总线宽度为 20 位,其可以寻址的内存空间为。

答案:1MB。

因为 2^20 = 1048576B = 1MB。

第二章寄存器检测点 21(1)写出每条汇编指令执行后相关寄存器中的值。

mov ax,62627 AX = 62627mov ah,31H AH = 31H,AX = 31627mov al,23H AL = 23H,AX = 3123H检测点 22(1)给定段地址为 0001H,仅通过变化偏移地址寻址,CPU 的寻址范围为到。

答案:00010H 到 1000FH。

(2)有一数据存放在内存 20000H 单元中,现给定段地址为 SA,若想用偏移地址寻到此单元。

则 SA 应满足的条件是:最小为,最大为。

答案:最小为 1001H,最大为 2000H。

第三章内存访问检测点 31(1)下面的程序实现依次用内存 0:0~0:15 单元中的内容改写程序中的数据。

完成程序。

assume cs:codesgcodesg segmentdw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987Hstart: mov ax,0mov ds,axmov bx,0mov cx,8s: mov ax,bxmov bx+16,axadd bx,2loop smov ax,4c00hint 21hcodesg endsend start检测点 32(1)下面的程序将“Mov ax,4c00h ”之前的指令复制到内存 0:200 处。

汇编语言课后习题答案 王爽主编

汇编语言课后习题答案 王爽主编

补全编程,利用jcxz指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。

assume cs:codecode segmentstart: mov ax,2000hmov ds,axmov bx,0s: mov ch,0mov cl,[bx]jcxz ok ;当cx=0时,CS:IP指向OKinc bxjmp short sok: mov dx,bxmov ax ,4c00hint 21hcode endsend start检测点9.3补全编程,利用loop指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。

assume cs:codecode segmentstart: mov ax,2000hmov ds,axmov bx,0s:mov cl,[bx]mov ch,0inc cxinc bxloop sok:dec bxmov dx,bxmov ax,4c00hint 21hcode endsend start书P101,执行loop s时,首先要将(cx)减1。

“loop 标号”相当于dec cxif((cx)≠0) jmp short 标号检测点10.1补全程序,实现从内存1000:0000处开始执行指令。

assume cs:codestack segmentdb 16 dup (0)stack endscode segmentstart: mov ax,stackmov ss,axmov sp,16mov ax, 1000hmov ax, 0push axretfcode endsend start执行reft指令时,相当于进行:pop ippop cs根据栈先进后出原则,应先将段地址cs入栈,再将偏移地址ip入栈。

检测点10.3下面的程序执行后,ax中的数值为多少?内存地址机器码汇编指令执行后情况1000:0 b8 00 00 mov ax,0 ax=0,ip指向1000:31000:3 9a 09 00 00 10 call far ptr s pop cs,pop ip,ip指向1000:91000:8 40 inc ax1000:9 58 s:pop ax ax=8hadd ax,ax ax=10hpop bx bx=1000hadd ax,bx ax=1010h用debug进行跟踪确认,“call far ptr s”是先将该指令后的第一个字节段地址cs=1000h入栈,再将偏移地址ip=8h入栈,最后转到标号处执行指令。

汇编语言(王爽第三版)实验5编写、调试具体多个段的程序

汇编语言(王爽第三版)实验5编写、调试具体多个段的程序

汇编语⾔(王爽第三版)实验5编写、调试具体多个段的程序实验5 编写、调试具体多个段的程序⼀。

将下⾯的程序编译连接,⽤Debug加载、跟踪,然后回答问题。

assume cs:code,ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdata endsstack segmentdw 0,0,0,0,0,0,0,0stack endscode segmentstart: mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]mov ax,4c00hint 21hcode endsend start程序分析:由于是初次接触,我们逐步讲解,废话多点。

(1)此程序考察的是内存中数据段和栈段的定义。

程序共定义了1个数据段,data段,⾸先明确,在程序运⾏开始(标号start处),这个数据段就已经被定义好了,并且分配了内存空间,并赋值了。

⼀个栈段,stack。

同理这个数据段在没有被⼈⼯定义为栈结构时,也被定义好了。

并且分配了内存空间,并赋值了。

将此程序编译并连接后,使⽤debug调试,(这⾥需要注意,以下的段地址可能由于系统不同⽽有差异,主要是理解概念。

)E:\assembly>debug eee.exe-rAX=0000 BX=0000 CX=0042 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=0B55 ES=0B55 SS=0B65 CS=0B67 IP=0000 NV UP EI PL NZ NA PO NC0B67:0000 B8660B MOV AX,0B66程序分析:我们什么也没执⾏,此时我们在data段定义的数据在哪?在ds:0100H处(原来讲过,程序最开始时ds:00~ds:100H是留给程序与操作系统通讯使⽤的psp内存段,参见书中p92);也就是说我们在ds:100H、0B55:100H或0B65:00处可以看见这些定义的数据。

汇编语言程序设计教程(第3版卜艳萍)参考答案

汇编语言程序设计教程(第3版卜艳萍)参考答案

汇编语⾔程序设计教程(第3版⼘艳萍)参考答案汇编语⾔程序设计教程(第3版)习题参考答案第1章汇编语⾔基础知识思考与练习1.计算机系统分哪⼏个层次?简述计算机系统的硬件结构。

1)数字逻辑层2) 微体系结构层3) 指令系统层4) 操作系统层5) 汇编语⾔层6) ⾼级语⾔层7) 应⽤层硬件系统是指构成计算机系统的物理实体或物理装置。

它由控制器、运算器、存储器、输⼊设备和输出设备等部件构成。

2.简述⽤汇编语⾔进⾏程序设计的必要性。

1)程序要具有较快的执⾏时间,或者只能占⽤较⼩的存储容量。

例如,操作系统的核⼼程序段,实时控制系统的软件,智能仪器仪表的控制程序等。

2)程序与计算机硬件密切相关,程序要直接、有效地控制硬件。

例如,I/O接⼝电路的初始化程序段,外部设备的低层驱动程序等。

3)⼤型软件需要提⾼性能、优化处理的部分。

例如计算机系统频繁调⽤的⼦程序、动态连接库等。

4)没有合适的⾼级语⾔或只能采⽤汇编语⾔的时候。

例如,开发最新的处理器程序时,暂时没有⽀持新指令的编译程序。

5)汇编语⾔还有许多实际应⽤,例如分析具体系统尤其是该系统的低层软件、加密解密软件、分析和防治计算机病毒等。

3.汉字编码主要分哪⼏类?每类的功能如何?汉字编码主要分为四类:汉字输⼊码、汉字交换码、汉字机内码和汉字字形码。

1)为了能直接使⽤西⽂标准键盘进⾏输⼊,就必须为汉字设计相应的编码⽅法,即⽤西⽂标准键盘上的字母数字串表⽰汉字的编码。

⽬前,汉字输⼊编码⽅法主要有三种:数字编码、拼⾳编码和字形编码。

2)汉字交换码:在不同汉字信息处理系统间进⾏汉字交换时所使⽤的编码,就是国标码。

⽆论采⽤哪种⽅法输⼊汉字,⼀旦输⼊到计算机中,必须采⽤统⼀的国标码标识每个汉字。

3)汉字机内码是汉字在设备或信息处理系统内部最基本的表达形式,是在设备和信息处理系统内部存储、处理、传输汉字⽤的编码。

4)字形编码也称为字模码,是⽤点阵表⽰的汉字字形代码,它是汉字的输出形式。

汇编语言第三版(王爽)9-1.1

汇编语言第三版(王爽)9-1.1

⑴一个CPU的寻址能力为8KB,那么它的地址总线宽度为:13解析:1KB=1024B --> 8KB=8*1024B=23*210B=213B,也就是说,假设将每一个存储单元(1B=8bit)理解成一个房间,那么213B也就是说能找到213这么多个的房间数,房间编号从0--213-1 213就是CPU的寻址能力,也可以说是CPU寻址空间大小。

既然CPU能找到这么多种编号的房间,每一根线能传输0或者1也就是有213中可能,也就是说有13根地址总线,因此它的地址总线宽度为13。

假设将8KB改8Kb,1Kb = 1024 b,8kb = 1024 * 8 b=1024 Byte= 210=1024字节,所以地址总线宽度为10⑵1KB的存储器有1024个存储单元,存储单元的编号从0到1023解析:1个存储单元是8bit,即1Byte(字节),1字节就是一个存储单元,根据换算关系,1KB=1024B,即1KB有1024个存储单元,存储单元的编号都是从0开始编起,若有n根地址总线编号就从0到2n-1,假设地址总线有3根,那么能表示不同的标号情况有000,001,010,011,100,101,110,111。

即有这8种情况,对应的十进制为0-7。

(3)1KB的存储器可以存储1024*8个bit,1024个Byte解析:1B=8bit,1KB=1024B;那么1024B=1024*8bit(4)1GB、1MB、1KB分别是230220210个Byte解析:根据换算关系1GB=1024MB=1024*1024KB=1024*1024*1024Byte,1MB=1024KB=1024*1024Byte,1KB=1024B。

(5)8080、8088、80286、80386的地址总线宽度分别为16根,20根,24根、32根 ,则它们的寻址能力分别为:26(KB )、1(MB )、24(MB )、4(GB )解析:8080的寻址能力大小为216B ,转换为KB 就是26KB ,8088的寻址空间大小为220B=210KB=1MB ,80286的寻址能力为224B=214KB=24MB ,80386的寻址空间大小为232B=222KB=212MB=4GB(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根,则它们一次可以传送的数据为1(B )、1(B )、2(B )、2(B )、4(B )解析:传送的数据可分为有符号和无符号的,如果是有符号的,那么最高位0代表在正数,为1代表负数。

汇编语言(王爽第三版)实验3编程、编译、连接、跟踪

汇编语言(王爽第三版)实验3编程、编译、连接、跟踪

汇编语⾔(王爽第三版)实验3编程、编译、连接、跟踪实验3 编程、编译、连接、跟踪(1)将下⾯的程序保存为t1.asm⽂件,将其⽣产可执⾏⽂件t1.exe。

assume cs:codesgcodesg segmentmov ax, 2000Hmov ss, axmov sp, 0add sp, 10pop axpop bxpush axpush bxpop axpop bxmov ax, 4C00Hint 21Hcodesg endsend(2)⽤debug跟踪t1.exe的执⾏过程,写出每⼀步骤执⾏后,相关寄存器中的内容和栈顶的内容。

(3)PSP的头两个字节是CD 20,⽤debug加载t1.exe,查看PSP的内容。

实验结果:【1】编译、连接t1.asm汇编源程序。

1)在windows XP中,打开cmd窗⼝,编译t1.asm程序。

如下图:E:\assembly>masm t1.asmMicrosoft (R) MASM Compatibility DriverCopyright (C) Microsoft Corp 1993. All rights reserved.Invoking: ML.EXE /I. /Zm /c /Ta t1.asmMicrosoft (R) Macro Assembler Version 6.15.8803Patched for you by promethee [ECL] in the year 2001 - enjoyCopyright (C) Microsoft Corp 1981-2000. All rights reserved.Assembling: t1.asm如果没有任何错误,编译器会⽣成⼀个t1.obj的⽂件。

如果有语法等严重的错误,编译器会给出错误信息,你可以根据错误信息,修改源代码相关的⾏。

连接这个obj⽂件,并⽣成t1.exe⽂件:如下图:E:\assembly>link t1.objMicrosoft (R) Segmented Executable Linker Version 5.60.339 Dec 5 1994Copyright (C) Microsoft Corp 1984-1993. All rights reserved.Run File [t1.exe]: t1.exeList File [nul.map]:Libraries [.lib]:Definitions File [nul.def]:LINK : warning L4021: no stack segmentLINK : warning L4038: program has no starting address连接讲解:1)其中运⾏⽂件:我们输⼊我们将要⽣成的可执⾏程序(例如.exe)⽂件的名称。

汇编语言与接口技术课后答案(1-8章完整版)-王让定 朱莹编( 下载后可查看剩余几章内容)

汇编语言与接口技术课后答案(1-8章完整版)-王让定 朱莹编( 下载后可查看剩余几章内容)

第一章(下载后可查看)第二章1.8086/8088 CPU的地址总线有多少位?其寻址范围是多少?答:8086/8088 CPU的地址总线共20位,最大可寻址1MB空间。

2.8086/8088 CPU分为哪两个部分?各部分主要由什么组成?答:8086/8088 CPU分为总线接口部件(BIU)和执行部件(EU)两个部分。

其中: BIU包括:4个16位的段地址寄存器(CS、DS、SS、ES);1个16位的指令指针寄存器IP;1个20位的地址加法器;指令队列寄存器;内部寄存器;输入输出总线控制逻辑;EU包括:4个16位的通用数据寄存器(AX、BX、CX、DX);4个16位的专用寄存器(BP、SP、SI、DI);1个16位的标志寄存器FR;4. 8086/8088 CPU中有几个通用寄存器?有几个变址寄存器?有几个指针寄存器?通常哪几个寄存器亦可作为地址寄存器使用?答:8086/8088 CPU中共有:8个16位的通用寄存器AX、BX、CX、DX 、BP、SP、SI、DI;2个变址寄存器SI、DI;2个指针寄存器BP、SP;其中BX、BP、SI、DI亦可作地址寄存器。

5.8086/8088 CPU中有哪些标志位?它们的含义和作用如何?答:8086/8088 CPU中共有9个标志位,其中DF、IF和TF为控制标志位,其余6个为状态标志位。

它们的含义和作用如下所示:CF(Carry Flag)进位标志:若算术运算的结果产生了进位或借位(对字节操作最高位是D7位;对字操作最高位是D15位),则CF=1,否则CF=0。

PF(Parity/Even Flag)奇偶标志:如果运算结果中含有偶数个1,则PF=1,否则PF=0。

此标志位主要用于数据通信中,检测数据传送有无出错。

AF(Auxiliary Carry Flag)辅助进位标志:用于反映一个字节(字的低字节)的低4位向高4位有无进位(借位)的情况,有进(借)位时,AF=1,否则AF=0。

汇编语言(王爽著)P173页的答案(By月西RSing)

汇编语言(王爽著)P173页的答案(By月西RSing)

add di,2 add bx,10h loop s1 mov ax,4c00h int 21h code ends end start
分区 汇编语言(王爽著)P173页的答案 的第 2 页
汇编语言(王爽著)P173页的答案(By月西RSing)
2013年5月14日 0:22
assume cs:code,ds:data,ss:stack,es:table data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' db '1993','1994','1995' dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 34590,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800 data ends table segment db 21 dup ('year summ ne ?? ') table ends stack segment dw 8 dup (0) stack ends code segment start: mov ax,data mov ds,ax mov ax,stack mov ss,ax mov sp,10h mov ax,table mov es,ax mov bx,0 mov di,0 mov cx,21 s: push cx mov cx,4 mov si,0 mov al,[di] mov es:[bx+si],al inc si inc di loop s0 add bx,10h pop cx loop s mov bx,0

《汇编语言》在线测试及测试答案

《汇编语言》在线测试及测试答案

习题一1.在计算机内部,计算机能够直接执行的程序语言是。

A.汇编语言B.C++语言C.机器语言D.高级语言2.在堆栈段中,存放栈顶地址的寄存器是。

A.IP B.SP C.BX D.BP3.指令指针寄存器IP用来存放代码段中的偏移地址。

在程序运行的过程中,它始终指向。

A.下一条指令的首地址B.下一条指令的地址C.当前指令的首地址D.当前指令的地址4.编译程序的功能是。

A.检查源程序中的语法错误和逻辑错误B.将源程序编译成目标程序C.改正源程序中的语法错误D.将高级语言源程序翻译成汇编语言源程序5.用户为了解决自己的问题,用汇编语言所编写的程序,称为。

A.目标程序B.源程序C.可执行程序D.汇编程序6.计算机中用来存储程序、数据等信息的记忆装置是。

A.控制器B.运算器C.CPUD.存储器7.在宏汇编中,源程序必须通过____编译_______生成目标代码,然后用连接程序将其转化为可执行文件, 该文件可在系统中运行。

习题二1 当 SS =3000H,SP =0100H 时,执行 PUSH AX 指令后,堆栈顶部的物理地址是()A.30100H B.30098H C.30102H D.300FEH2 设10000010B分别以原码、补码及反码表示时,则对应的十进制数依次是()A.-82、-126、-2 B.-2、-125、126C.-2、-126、-125 D.-82、-125、1253 标志寄存器中属于控制标志位的是()A. DF,OF,SFB. DF,IF,TFC. OF,CF,PFD. AF,OF,SF4 设(AX)=4544H,在执行指令”SUB AH,AL”之后,()A.CF=0,OF=0 B.CF=0,OF=1C.CF=1,OF=0 D.CF=1,OF=15 若寄存器AX、BX、CX、DX的内容分别为18,19,20,21时,依次执行PUSH AX,PUSH BX,POP CX,POP DX后,寄存器CX的内容为______19____________。

汇编语言程序设计教程(第3版 卜艳萍)参考答案

汇编语言程序设计教程(第3版 卜艳萍)参考答案

汇编语言程序设计教程(第3版)习题参考答案第1章汇编语言基础知识思考与练习1.计算机系统分哪几个层次?简述计算机系统的硬件结构。

1)数字逻辑层2) 微体系结构层3) 指令系统层4) 操作系统层5) 汇编语言层6) 高级语言层7) 应用层硬件系统是指构成计算机系统的物理实体或物理装置。

它由控制器、运算器、存储器、输入设备和输出设备等部件构成。

2.简述用汇编语言进行程序设计的必要性。

1)程序要具有较快的执行时间,或者只能占用较小的存储容量。

例如,操作系统的核心程序段,实时控制系统的软件,智能仪器仪表的控制程序等。

2)程序与计算机硬件密切相关,程序要直接、有效地控制硬件。

例如,I/O接口电路的初始化程序段,外部设备的低层驱动程序等。

3)大型软件需要提高性能、优化处理的部分。

例如计算机系统频繁调用的子程序、动态连接库等。

4)没有合适的高级语言或只能采用汇编语言的时候。

例如,开发最新的处理器程序时,暂时没有支持新指令的编译程序。

5)汇编语言还有许多实际应用,例如分析具体系统尤其是该系统的低层软件、加密解密软件、分析和防治计算机病毒等。

3.汉字编码主要分哪几类?每类的功能如何?汉字编码主要分为四类:汉字输入码、汉字交换码、汉字机内码和汉字字形码。

1)为了能直接使用西文标准键盘进行输入,就必须为汉字设计相应的编码方法,即用西文标准键盘上的字母数字串表示汉字的编码。

目前,汉字输入编码方法主要有三种:数字编码、拼音编码和字形编码。

2)汉字交换码:在不同汉字信息处理系统间进行汉字交换时所使用的编码,就是国标码。

无论采用哪种方法输入汉字,一旦输入到计算机中,必须采用统一的国标码标识每个汉字。

3)汉字机内码是汉字在设备或信息处理系统内部最基本的表达形式,是在设备和信息处理系统内部存储、处理、传输汉字用的编码。

4)字形编码也称为字模码,是用点阵表示的汉字字形代码,它是汉字的输出形式。

4.计算机的字长是怎么定义的,试举例说明。

汇编语言王爽第三版课后答案

汇编语言王爽第三版课后答案

汇编语言王爽第三版课后答案【篇一:汇编语言王爽第二版课后答案】lass=txt>----------------------(1) 13(2) 1024,0,1023 (3) 8192,1024(4) 2^30,2^20,2^10 (5) 64,1,16,4 (6) 1,1,2,2,4 (7) 512,256 (8) 二进制注意:1.第4题中的符号^指求幂运算(如: 2^30指2的30次方)第二章寄存器(cpu工作原理)检测点2.1(第18页) ----------------------(1)写出每条汇编指令执行后相关寄存器中的值。

第一空:f4a3h 第二空:31a3h 第三空:3123h 第四空:6246h 第五空:826ch 第六空:6246h 第七空:826ch 第八空:04d8h 第九空:0482h 第十空:6c82h 第十一空:d882h 第十二空:d888h 第十三空:d810h 第十四空:6246h(2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。

解答如下: mov ax,2 add ax,ax add ax,ax add ax,ax检测点2.2(第23页) ----------------------(1)00010h,1000fh (2)1001h,2000h第2题说明:因为段的起始地址要为16的倍数。

所以当段地址小于1001h或大于2000h时cpu都无法寻到。

检测点2.3(第33页) ----------------------答:cpu修改了4次ip的值。

情况如下:第1次:执行完mov ax,bx后第2次:执行完sub ax,ax后第3次:读入jmp ax后第4次:执行完jmp ax后最后ip的值为0实验1 查看cpu和内存,用机器指令和汇编指令编程(第33页)-----------------------------------------------------1.预备知识:debug的使用此部分略2.实验任务(第43页) (1)此部分略 (2)此部分略(3)通过debug中的d命令查看到主板的生产日期[以月、日、年,分隔符为/的格式]存储在内存ffff:0005~ffff:000c(共8个字节单元中)处。

汇编语言 (王爽)第三版检测点答案(带目录)

汇编语言 (王爽)第三版检测点答案(带目录)

汇编语言答案(王爽)第一章检测点1.1(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13位。

(2)1KB的存储器有1024个存储单元,存储单元的编号从0到1023。

(3)1KB的存储器可以存储8192(2^13)个bit,1024个Byte。

(4)1GB是1073741824(2^30)个Byte、1MB是1048576(2^20)个Byte、1KB是1024(2^10)个Byte。

(5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为:64(KB)、1(MB)、16(MB)、4(GB)。

(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。

则它们一次可以传送的数据为:1(B)、1(B)、2(B)、2(B)、4(B)。

(7)从内存中读取1024字节的数据,8086至少要读512次,80386至少要读256次。

(8)在存储器中,数据和程序以二进制形式存放。

解题过程:(1)1KB=1024B,8KB=1024B*8=2^N,N=13。

(2)存储器的容量是以字节为最小单位来计算的,1KB=1024B。

(3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。

(4)1GB=1073741824B(即2^30)1MB=1048576B(即2^20)1KB=1024B(即2^10)。

(5)一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。

这样的CPU最多可以寻找2的N次方个内存单元。

(一个内存单元=1Byte)。

(6)8根数据总线一次可以传送8位二进制数据(即一个字节)。

(7)8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。

(8)在存储器中指令和数据没有任何区别,都是二进制信息。

汇编语言王爽第三版检测点答案带目录

汇编语言王爽第三版检测点答案带目录

汇编语言王爽第三版检测点答案带目录一、前言在学习汇编语言的过程中,王爽老师的《汇编语言》第三版是一本备受推崇的教材。

为了帮助大家更好地掌握这门语言,下面将为大家提供一份详细的检测点答案,并附上目录,以便大家能够快速找到所需内容。

二、目录1、基础知识11 数制与编码12 内存地址空间2、寄存器21 通用寄存器22 段寄存器3、指令系统31 数据传送指令32 算术运算指令33 逻辑运算指令34 转移指令4、内存寻址41 直接寻址42 寄存器间接寻址43 基址变址寻址44 相对基址变址寻址5、程序设计51 顺序程序设计52 分支程序设计53 循环程序设计6、中断与 BIOS 调用61 中断概念62 BIOS 调用三、检测点答案1、基础知识11 数制与编码检测点 11:将十进制数 123 转换为十六进制数。

答案:7B检测点 12:已知一个字节的二进制数为 10101100,求其对应的十进制数。

答案:17212 内存地址空间检测点 13:若内存地址从 0000H 到 7FFFH,其存储容量是多少?答案:32KB检测点 14:内存地址空间中,某段地址范围为 2000H 2FFFH,该段地址空间有多少字节?答案:4KB2、寄存器21 通用寄存器检测点 21:在 8086 CPU 中,AX 寄存器可以分为哪两个 8 位寄存器?答案:AH 和 AL检测点 22:已知 AX = 1234H,BX = 5678H,执行 ADD AX, BX 后,AX 的值是多少?答案:68ACH22 段寄存器检测点 23:CS 寄存器的作用是什么?答案:CS 寄存器用于存放代码段的段地址。

检测点 24:若代码段的段地址为 1000H,偏移地址为 2000H,那么物理地址是多少?答案:12000H3、指令系统31 数据传送指令检测点31:MOV AX, 1000H 指令执行后,AX 寄存器的值是多少?(假设内存单元 1000H 的值为 5678H)答案:5678H检测点 32:已知 AX = 1234H,BX = 5678H,执行 MOV 2000H, AX 后,内存单元 2000H 的值是多少?答案:1234H32 算术运算指令检测点 33:若 AX = 1000H,BX = 2000H,执行 ADD AX, BX 后,AX 和 CF 的值分别是多少?答案:AX = 3000H,CF = 0检测点 34:已知 AX = 5678H,执行 INC AX 后,AX 的值是多少?答案:5679H33 逻辑运算指令检测点 35:若 AX = 1234H,执行 AND AX, 0F0FH 后,AX 的值是多少?答案:0204H检测点 36:已知 AX = 5678H,执行 OR AX, 0F000H 后,AX 的值是多少?答案:5678H | 0F000H = 5F78H34 转移指令检测点 37:JMP 指令有几种跳转方式?答案:无条件跳转和条件跳转。

王爽《汇编语言》(第三版)实验16解析

王爽《汇编语言》(第三版)实验16解析

王爽《汇编语⾔》(第三版)实验16解析安装程序assume cs:codecode segmentstart: mov ax,csmov ds,axmov si,offset setscreenmov ax,0mov es,axmov di,200hmov cx,offset setscreenend-offset setscreencldrep movsbmov ax,0mov es,axmov word ptr es:[7ch*4],200hmov word ptr es:[7ch*4+2],0mov ax,4c00hint 21hsetscreen:cmp ah,0 ; 清屏je do1cmp ah,1 ; 设置前景⾊je do2cmp ah,2 ; 设置背景⾊je do3cmp ah,3 ; 向上滚动⼀⾏je do4jmp short sretdo1:call sub1jmp short sretdo2:call sub2jmp short sretdo3:call sub3jmp short sretdo4:call sub4sret: retsub1: push bxpush cxpush esmov bx,0b800hmov es,bxmov bx,0mov cx,2000sub1s: mov byte ptr es:[bx],' 'add bx,2loop sub1spop espop cxpop bxretsub2: push bxpush cxpush esmov bx,0b800hmov es,bxmov bx,1mov cx,2000sub2s: and byte ptr es:[bx],11111000bor es:[bx],aladd bx,2loop sub2sloop sub2spop espop cxpop bxretsub3: push bxpush cxpush esmov cl,4shl al,clmov bx,0b800hmov es,bxmov bx,1mov cx,2000sub3s: and byte ptr es:[bx],10001111bor es:[bx],aladd bx,2loop sub3spop espop cxpop bxretsub4: push cxpush sipush dipush espush dsmov si,0b800hmov es,simov ds,simov si,160mov di,0cldmov cx,24sub4s: push cxmov cx,160rep movsbpop cxloop sub4smov cx,80mov si,0sub4s1: mov byte ptr [160*24+si],' ' ;最后⼀⾏清空 add si,2loop sub4s1pop dspop espop dipop sipop cxretsetscreenend: nopcode endsend start测试assume cs:codecode segmentstart: ;mov ah,0 ;清屏;mov ah,1;mov al,7 ; 设置前景⾊,al为颜⾊;mov ah,2;mov al,7 ; 设置背景⾊,al为颜⾊;mov ah,3 ; 向上滚动⼀⾏int 7chmov ax,4c00hint 21hcode endsend start。

汇编语言与接口技术课后答案(1-8章完整版)-王让定朱莹编(下载后可查看剩余几章内容)

汇编语言与接口技术课后答案(1-8章完整版)-王让定朱莹编(下载后可查看剩余几章内容)

第一章(下载后可查看)第二章1.8086/8088 CPU 的地址总线有多少位?其寻址范围是多少?答:8086/8088 CPU 的地址总线共20位, 最大可寻址1MB空间。

2.8086/8088 CPU分为哪两个部分?各部分主要由什么组成?答:8086/8088 CPU 分为总线接口部件(BIU)和执行部件(EU)两个部分。

其中BIU包括:4 个16 位的段地址寄存器(CS、DS、SS、ES);1个16位的指令指针寄存器IP;1个20位的地址加法器;指令队列寄存器;内部寄存器;输入输出总线控制逻辑;EU包括:4 个16 位的通用数据寄存器(AX、BX、CX、DX);4个16位的专用寄存器(BP、SP、SI、DI);1个16位的标志寄存器FR;4. 8086/8088 CPU 中有几个通用寄存器?有几个变址寄存器?有几个指针寄存器?通常哪几个寄存器亦可作为地址寄存器使用?答:8086/8088 CPU 中共有:8个16位的通用寄存器AX、BX、CX、DX 、BP、SP、SI、DI;2 个变址寄存器SI 、DI;2 个指针寄存器BP、SP;其中BX、BP、SI 、DI 亦可作地址寄存器。

5.8086/8088 CPU 中有哪些标志位?它们的含义和作用如何?答:8086/8088 CPU中共有9个标志位,其中DF、IF 和TF为控制标志位,其余6 个为状态标志位。

它们的含义和作用如下所示:CF(Carry Flag) 进位标志: 若算术运算的结果产生了进位或借位( 对字节操作最高位是D7位;对字操作最高位是D15位),则CF=1,否则CF=0。

PF(Parity/Even Flag) 奇偶标志:如果运算结果中含有偶数个1, 则PF=1,否则PF=0。

此标志位主要用于数据通信中, 检测数据传送有无出错。

AF(Auxiliary Carry Flag) 辅助进位标志: 用于反映一个字节( 字的低字节) 的低4位向高4位有无进位(借位)的情况,有进(借)位时,AF=1,否则AF=0。

汇编语言第3版答案

汇编语言第3版答案

汇编语言第3版答案[正文]第一章:汇编语言概述汇编语言是一种低级语言,用于编写计算机程序,并且直接与计算机硬件进行交互。

它是机器语言的一种文本表示形式,利用助记符来代替二进制指令码。

汇编语言有助于我们更好地理解计算机的底层工作原理。

第二章:汇编语言的基本结构汇编语言程序由一系列指令组成,每个指令对应计算机的一条机器指令。

汇编语言程序通常包括数据段、代码段和堆栈段。

数据段用于存储程序中使用的数据,代码段包含程序的指令,堆栈段用于存储程序的运行时临时数据。

第三章:汇编语言的数据类型汇编语言中常见的数据类型包括字节(byte)、字(word)、双字(double word)和四字(quad word)。

不同的数据类型有不同的长度和表示范围。

在汇编语言中,我们需要指定每个变量的数据类型以确保正确的处理。

第四章:寄存器寄存器是计算机内部用于存储数据和进行运算的高速存储器。

常见的寄存器包括通用寄存器、指针寄存器、索引寄存器和标志寄存器。

在汇编语言中,我们可以直接使用这些寄存器来完成各种计算任务。

第五章:汇编语言的指令汇编语言提供了各种指令来执行不同的操作,例如算术操作、逻辑操作、数据传输和控制转移等。

每个指令都由助记符和操作数组成,助记符表示指令的类型,操作数表示指令的操作对象。

我们需要根据需要选择适当的指令完成特定的任务。

第六章:条件和循环条件和循环是编程中常用的控制结构,汇编语言也提供了相应的指令来支持条件和循环。

通过条件和循环结构,我们可以根据不同的条件决定程序的执行流程,以及多次执行特定的代码块。

第七章:子程序子程序是汇编语言中的一个重要概念,它可以将一组相关的指令封装成一个独立的代码块。

通过调用子程序,我们可以提高程序的复用性和可读性。

在子程序执行完毕后,程序会返回到调用子程序的位置继续执行。

第八章:中断和异常处理中断和异常是计算机系统中常见的事件,汇编语言提供了相应的指令和机制来处理这些事件。

通过中断和异常处理,我们可以在程序执行过程中对特定的事件做出响应,并进行相应的处理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言答案(王爽)第一章检测点1.1(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13位。

(2)1KB的存储器有1024个存储单元,存储单元的编号从0到1023。

(3)1KB的存储器可以存储8192(2^13)个bit,1024个Byte。

(4)1GB是1073741824(2^30)个Byte、1MB是1048576(2^20)个Byte、1KB是1024(2^10)个Byte。

(5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为:64(KB)、1(MB)、16(MB)、4(GB)。

(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。

则它们一次可以传送的数据为:1(B)、1(B)、2(B)、2(B)、4(B)。

(7)从内存中读取1024字节的数据,8086至少要读512次,80386至少要读256次。

(8)在存储器中,数据和程序以二进制形式存放。

解题过程:(1)1KB=1024B,8KB=1024B*8=2^N,N=13。

(2)存储器的容量是以字节为最小单位来计算的,1KB=1024B。

(3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。

(4)1GB=1073741824B(即2^30)1MB=1048576B(即2^20)1KB=1024B(即2^10)。

(5)一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。

这样的CPU最多可以寻找2的N次方个内存单元。

(一个内存单元=1Byte)。

(6)8根数据总线一次可以传送8位二进制数据(即一个字节)。

(7)8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。

(8)在存储器中指令和数据没有任何区别,都是二进制信息。

第二章检测点 2.1(1)写出每条汇编指令执行后相关寄存器中的值。

mov ax,62627AX=F4A3Hmov ah,31H AX=31A3Hmov al,23H AX=3123Hadd ax,ax AX=6246Hmov bx,826CH BX=826CHmov cx,ax CX=6246Hmov ax,bx AX=826CHadd ax,bx AX=04D8Hmov al,bh AX=0482Hmov ah,bl AX=6C82Hadd ah,ah AX=D882Hadd al,6AX=D888Hadd al,al AX=D810Hmov ax,cx AX=6246H检测点2.1(2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。

mov ax,2AX=2add ax,ax AX=4add ax,ax AX=8add ax,ax AX=16检测点2.2(1)给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为0010H 到1000FH。

解题过程:物理地址=SA*16+EAEA的变化范围为0h~ffffh物理地址范围为(SA*16+0h)~(SA*16+ffffh)现在SA=0001h,那么寻址范围为(0001h*16+0h)~(0001h*16+ffffh)=0010h~1000fh检测点2.2(2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。

则SA应满足的条件是:最小为1001H,最大为2000H。

当段地址给定为1001H以下和2000H以上,CPU无论怎么变化偏移地址都无法寻到20000H单元。

解题过程:物理地址=SA*16+EA20000h=SA*16+EASA=(20000h-EA)/16=2000h-EA/16EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值EA取最小值时,SA=2000h-0h/16=2000h,SA为最大值检测点2.3下面的3条指令执行后,cpu几次修改IP?都是在什么时候?最后IP中的值是多少?mov ax,bxsub ax,axjmp ax答:一共修改四次第一次:读取mov ax,bx之后第二次:读取sub ax,ax之后第三次:读取jmp ax之后第四次:执行jmp ax修改IP最后IP的值为0000H,因为最后ax中的值为0000H,所以IP中的值也为0000H第三章检测点3.1(1)在DEBUG中,用"D0:0lf"查看内存,结果如下:0000:00007080F030EF6030E2-00808012662022600000:00106226E6D6CC2E3C3B-AB BA000026066688下面的程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值mov ax,1mov ds,axmov ax,[0000]ax=2662Hmov bx,[0001]bx=E626Hmov ax,bx ax=E626Hmov ax,[0000]ax=2662Hmov bx,[0002]bx=D6E6Hadd ax,bx ax=FD48Hadd ax,[0004]ax=2C14Hmov ax,0ax=0mov al,[0002]ax=00e6Hmov bx,0bx=0mov bl,[000c]bx=0026Hadd al,bl ax=000CH检测点3.1(2)内存中的情况如图3.6所示各寄存器的初始值:cs=2000h,ip=0,ds=1000h,ax=0,bx=0;检测点3.2(1)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中。

mov ax,1000Hmov ds,axmov ax,2000Hmov ss,axmov sp,10hpush[0]push[2]push[4]push[6]push[8]push[A]push[C]push[E]检测点3.2(2)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中。

mov ax,2000Hmov ds,axmov ax,1000Hmov ss,axmov sp,0pop[e]pop[c]pop[a]pop[8]pop[6]pop[4]pop[2]pop[0]第六章检测点6.1(1)下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序:assume cs:codesgcodesg segmentdw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h start:mov ax,0mov ds,axmov bx,0mov cx,8s:mov ax,[bx]mov cs:[bx],axadd bx,2loop smov ax,4c00hint21hcodesg endsend start检测点6.1(2)下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。

栈空间设置在程序内。

完成程序:assume cs:codesgcodesg segmentdw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdw0,0,0,0,0,0,0,0,0,0start:mov ax,codesg;或mov ax,csmov ss,axmov sp,24h;或mov sp,36;(第一版填1ah 或26)mov ax,0mov ds,axmov bx,0mov cx,8s:push[bx]pop cs:[bx];或pop ss:[bx]add bx,2loop smov ax,4c00hint21hcodesg endsend start(1)程序如下。

assume cs:codedata segmentdw2dup(0)data endscode segmentstart:mov ax,dtatmov ds,axmov bx,0jmp word ptr[bx+1]code endsend start若要使jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?答案①db3dup(0)答案②dw2dup(0)答案③dd0jmp word ptr[bx+1]为段内转移,要CS:IP指向程序的第一条指令,应设置ds:[bx+1]的字单元(2个字节)存放数据应为0,则(ip)=ds:[bx+1]=0简单来说就是,只要ds:[bx+1]起始地址的两个字节为0就可以了第九章检测点9.1(1)程序如下。

assume cs:codedata segmentdd12345678hdata endscode segmentstart:mov ax,datamov ds,axmov bx,0mov[bx],bx;或mov[bx],word ptr0;或mov[bx],offset startmov[bx+2],cs;或mov[bx+2],cs;或mov[bx+2],seg codejmp dword ptr ds:[0]code endsend start补全程序,使用jmp指令执行后,CS:IP指向程序的第一条指令。

第一格可填①mov[bx],bx②mov[bx],word ptr0③mov [bx],offset start等。

第二格可填①mov[bx+2],cs②mov[bx+2],cs③mov [bx+2],seg code等。

解析:jmp dword ptr ds:[0]为段间转移,(cs)=(内存单元地址+2),(ip)=(内存单元地址),要CS:IP指向程序的第一条指令,第一条程序地址cs:0,应设置CS:IP指向cs:0程序中的mov[bx],bx这条指令,是将ip设置为0mov[bx+2],cs,将cs这个段地址放入内存单元执行后,cs应该不变,只调整ip为0,(ip)=ds:[0]=0检测点9.1(3)用Debug查看内存,结果如下:2000:1000BE0006000000......则此时,CPU执行指令:mov ax,2000hmov es,axjmp dword ptr es:[1000h]后,(cs)=0006H,(ip)=00BEH解析:jmp dword ptr为段间转移,高位存放段地址,低位存放偏移地址(cs)=(内存单元地址+2),(ip)=(内存单元地址)根据书P16,对于寄存器AX,AH为高位(前1字节为高位),AL为低位(后1字节为低位)推算出(内存单元地址)=00beh,(内存单元地址+2)=0006h根据书P182,高位存放段地址(后2个字节为高位),低位存放偏移地址(前2个字节为低位)(cs)=(内存单元地址+2),(ip)=(内存单元地址)推算出(cs)=0006h,(ip)=00beh检测点9.2补全编程,利用jcxz指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。

相关文档
最新文档