汇编语言(王爽)第三版检测点答案(带目录)
汇编语言实验答案 (王爽)
汇编语言答案检测点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个字节单元中)处。
汇编语言(王爽第三版)检测点
汇编语⾔(王爽第三版)检测点这本书购于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 处。
汇编语言第三版习题答案
汇编语言第三版习题答案汇编语言是一种低级编程语言,它允许程序员直接控制计算机硬件。
第三版通常指的是某本汇编语言教材的修订版,其中习题答案对于学习者来说非常重要,因为它们可以帮助理解概念并验证自己的编程技能。
在汇编语言的学习过程中,习题通常包括指令集的使用、程序设计、寄存器操作、内存管理、中断处理等。
以下是一些可能的习题答案示例,但请注意,这些答案需要与具体的习题相匹配,并且可能因教材版本和习题内容的不同而有所变化。
示例习题答案习题1:编写一个汇编程序,将AX寄存器的值加1。
答案:```INC AX```习题2:编写一个程序段,将DX寄存器的值移动到AX寄存器。
答案:```MOV AX, DX```习题3:假设有一个数组存储在内存中,数组的起始地址为DS:BX,数组元素为16位整数,编写一个程序段,将数组的第一个元素加到AX 寄存器。
答案:```MOV AX, [BX] ; 将数组的第一个元素移动到AXADD AX, [BX] ; 将数组的第一个元素加到AX```习题4:编写一个程序,实现对一个字符串的逆序存储。
答案:```; 假设字符串以0结尾,存放在内存中,DS:SI指向字符串的起始地址MOV CX, 0 ; 初始化计数器LODSW ; 将字符串的一个字节加载到AX中CMP AX, 0 ; 检查是否为字符串的结束字符JE END_REVERSE ; 如果是,则跳转到结束标签PUSH AX ; 将当前字符压入堆栈INC CX ; 增加计数器JMP SHORT LODSW ; 继续加载下一个字符END_REVERSE:; 现在堆栈中存储了逆序的字符,将它们重新存储到内存中MOV BX, CX ; 将计数器的值移动到BX中MOV CX, BX ; 将BX的值再次移动到CX中,用于字符串的逆序输出POP AX ; 从堆栈中弹出字符STOSW ; 将字符存储到内存中LOOP END_REVERSE ; 重复直到CX为0```习题5:编写一个程序,计算AX寄存器中值的平方。
汇编语言(王爽第三版)实验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处可以看见这些定义的数据。
汇编语言第三版(王爽)实验七
;人均收入 mov cx,21
mov si,0 s3: mov dx,es:[si+7] mov ax,es:[si+5] mov bx,es:[si+10] div bx
mov es:[si+13],ax mov al,' ' mov es:[si+15],al
s1: mov ax,[si] mov es:[di],ax
mov ax,[si+2] mov es:[di+2],ax mov al,' ' mov es:[di+4],al
add si,4 add di,16 loop s1
;员工数 mov cx,21
mov si,168 mov di,10
s2: mov ax,[si] mov es:[di],ax mov al,' ' mov es:[di+2],al
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
登录后才能查看或发表评论立即登录或者逛逛博客园首页
实验内容
汇编语言第三版(王爽)实验七s:codesg,ds:data data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
汇编语言第三版(王爽)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 编程、编译、连接、跟踪(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. 以下是一段汇编代码,请问这段代码的功能是什么?```MOV AX, 5MOV BX, 3ADD AX, BX```答案:这段代码的功能是将寄存器AX中的值设置为5,将寄存器BX中的值设置为3,然后将AX和BX的值相加,结果保存在AX中。
2. 以下是一段汇编代码,请问这段代码的功能是什么?```MOV AL, 0MOV CX, 10LOOP_START:ADD AL, 1LOOP LOOP_START```设置为10。
然后通过循环,将AL的值逐步增加1,循环执行10次。
3. 以下是一段汇编代码,请问这段代码的功能是什么?```MOV AX, 10CMP AX, 5JG LABEL1JMP LABEL2LABEL1:ADD AX, 5LABEL2:SUB AX, 3```答案:这段代码的功能是将寄存器AX中的值设置为10,然后与5进行比较。
如果AX的值大于5,则跳转到LABEL1处执行,否则跳转到LABEL2处执行。
在LABEL1处,将AX的值增加5;在LABEL2处,将AX的值减去3。
4. 以下是一段汇编代码,请问这段代码的功能是什么?```MOV AX, 5MOV BX, 3MUL BX```置为3。
然后使用MUL指令,将AX的值与BX的值相乘,结果保存在AX中。
5. 以下是一段汇编代码,请问这段代码的功能是什么?```MOV AX, 10MOV BX, 2DIV BX```答案:这段代码的功能是将寄存器AX中的值设置为10,将寄存器BX中的值设置为2。
然后使用DIV指令,将AX的值除以BX的值,商保存在AX中,余数保存在DX中。
汇编语言王爽第三版课后答案
汇编语言王爽第三版课后答案【篇一:汇编语言王爽第二版课后答案】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个字节单元中)处。
王爽汇编语言(第三版)环境搭建(附PDF及工具下载)
王爽汇编语⾔(第三版)环境搭建(附PDF及⼯具下载)⼀、前⾔最近在学习汇编语⾔,使⽤的是读者评价⾮常⾼的王爽⽼师写的《汇编语⾔》(第三版),为了适应现在各个版本的windows操作系统,所以采⽤VMWare虚拟机来搭建纯DOS环境。
⼆、需要的⼯具VMware-workstation-12、DOS系统镜像⽂件、汇编编译器masm和连接器link2020-02-17 更新百度云链接链接:https:///s/1Ic3J8zZ8h0CctoWS-xFflg提取码:ggww三、安装VMware-workstation-12傻⽠式安装,⼀直点击下⼀步就可以(虽然⽹上也可以搜到注册码,请⽀持正版)。
四、搭建DOS编译环境(1)启动虚拟机,选择“创建新的虚拟机”;(2)选择“典型”,下⼀步;“稍后安装操作系统”,下⼀步;(3)在客户机操作系统中选择“其他”,在版本中选择“MS-DOS”,下⼀步;(4)选择虚拟机名和安装位置,下⼀步;(5)使⽤默认设置,下⼀步。
完成;(6)右键刚刚新建的虚拟机,选择“设置”。
(7)在“硬件”中点击CD/DVD,在右侧选择“使⽤ISO镜像⽂件”,点击浏览找到下载的dos71scd解压后的⽂件夹,⾥⾯有DOS的安装镜像,选择,点击打开,然后确定。
(8)开启虚拟机(9)说⼀下VMWare的基本操作,⿏标在虚拟机中操作时,如果想切换到本⾝的操作系统,需要按CTRL+ALT。
启动后会显⽰如下界⾯,按回车;(10)全部使⽤默认设置,⼀路“Next”,然后选择“Reboot now”重启虚拟机。
(12)重启后会提⽰invalid system disk,这是BIOS启动设置的问题,按CTRL+ALT+INSERT重启虚拟机,在开始VMWARE的LOGO处按F2(把握好时间,多试⼏次),进⼊BIOS设置,向右键(→)切换到Boot栏,向下键(↓)选择到CD-ROM Drive(变⽩即为选中),然后按SHIFT和加号(+),将其移动到最顶端。
汇编语言王爽检测点答案
;*****************************************************
;编程,将datasg段中的每个单词的前四个字母改写为大写字母
;******************************************************
assume cs:codesg,ss:stacksg,ds:datasg
assume cs:codesg,ds:data,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 8 dup(0)
d ends
;*********************************
;代码段
;*********************************
code segment
start:
mov ax,d
mov es,ax
mov ax,a
mov ds,ax
mov cx,8
mov ax,0
③第一空:X—2
第二空:X—1
(2)
1.一直不变
汇编语言(王爽第三版)实验6实践课程中的程序
汇编语⾔(王爽第三版)实验6实践课程中的程序实验6 实践课程中的程序(1)将课程中所有讲解过的程序上机测试,⽤debug跟踪其执⾏过程,并在过程中理解所讲内容。
问题7.6 将data段中每个单词的头⼀个字母改为⼤写字母。
assume cs:codedata segmentdb '1. file 'db '2. edit 'db '3. search 'db '4. view 'db '5. options 'db '6. help 'data endscode segment程序分析:1)数据段定义了6个字符串结构,长度⼀致都是16字节,并且字符都是连续的,并且头⼀个字母在字符串中的位置都是第4个字符,在上⾯的寻址⽅式中,我们发现[bx+idata]⽅式⽐较适合这种情况,idata代表每个字符串起始地址,bx代表基本偏移地址,bx的偏移量也是有规律的16。
2)在debug中,这6个字符串显⽰的正好是6⾏16列的字符,是⼀个我们在C语⾔中讲到的⼆维数组[6][16],其实它在内存中是线性单列排列的。
3)遇到此种情况我们使⽤[bx+idata]的⽅式进⾏内存的寻址⽐较科学。
完整的代码如下:assume cs:codedata segmentdb '1. file 'db '2. edit 'db '3. search 'db '4. view 'db '5. options 'db '6. help 'data endscode segmentstart:mov ax, datamov ds, axmov bx, 0 ;将ds:bx指向data第⼀个单元mov cx, 6 ;需要修改6次s: mov al, [bx+3] ;使⽤[bx+idata]寻址⽅式,并送⼊al(单字节)and al, 11011111b ;转换为⼤写字母mov [bx+3], al ;回写内存add bx, 16 ;6个字符串长度⼀致,都是16字节,增量为16loop smov ax, 4c00Hint 21Hcode endsend start结果分析:(1)在循环中,如遇到loop指令,⾸先我们要认识到,(cx)=(cx)-1;直到cx=0退出循环。
汇编语言 (王爽)第三版检测点答案(带目录)
汇编语言答案(王爽)第一章检测点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 指令有几种跳转方式?答案:无条件跳转和条件跳转。
汇编语言第3版答案
汇编语言第3版答案[正文]第一章:汇编语言概述汇编语言是一种低级语言,用于编写计算机程序,并且直接与计算机硬件进行交互。
它是机器语言的一种文本表示形式,利用助记符来代替二进制指令码。
汇编语言有助于我们更好地理解计算机的底层工作原理。
第二章:汇编语言的基本结构汇编语言程序由一系列指令组成,每个指令对应计算机的一条机器指令。
汇编语言程序通常包括数据段、代码段和堆栈段。
数据段用于存储程序中使用的数据,代码段包含程序的指令,堆栈段用于存储程序的运行时临时数据。
第三章:汇编语言的数据类型汇编语言中常见的数据类型包括字节(byte)、字(word)、双字(double word)和四字(quad word)。
不同的数据类型有不同的长度和表示范围。
在汇编语言中,我们需要指定每个变量的数据类型以确保正确的处理。
第四章:寄存器寄存器是计算机内部用于存储数据和进行运算的高速存储器。
常见的寄存器包括通用寄存器、指针寄存器、索引寄存器和标志寄存器。
在汇编语言中,我们可以直接使用这些寄存器来完成各种计算任务。
第五章:汇编语言的指令汇编语言提供了各种指令来执行不同的操作,例如算术操作、逻辑操作、数据传输和控制转移等。
每个指令都由助记符和操作数组成,助记符表示指令的类型,操作数表示指令的操作对象。
我们需要根据需要选择适当的指令完成特定的任务。
第六章:条件和循环条件和循环是编程中常用的控制结构,汇编语言也提供了相应的指令来支持条件和循环。
通过条件和循环结构,我们可以根据不同的条件决定程序的执行流程,以及多次执行特定的代码块。
第七章:子程序子程序是汇编语言中的一个重要概念,它可以将一组相关的指令封装成一个独立的代码块。
通过调用子程序,我们可以提高程序的复用性和可读性。
在子程序执行完毕后,程序会返回到调用子程序的位置继续执行。
第八章:中断和异常处理中断和异常是计算机系统中常见的事件,汇编语言提供了相应的指令和机制来处理这些事件。
通过中断和异常处理,我们可以在程序执行过程中对特定的事件做出响应,并进行相应的处理。
王爽《汇编语言》(第三版)实验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。
汇编语言(王爽著)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