文档库 最新最全的文档下载
当前位置:文档库 › 汇编语言_王爽_答案 课程设计二答案

汇编语言_王爽_答案 课程设计二答案

汇编语言_王爽_答案 课程设计二答案
汇编语言_王爽_答案 课程设计二答案

阅读下面的材料:

开机后,CPU 自动进入到FFF0:0 单元处执行,此处有一条跳转指令。CPU 执行该指令后,转去执行BIOS 中的硬件系统检测和初始化程序。

初始化程序将建立BIOS 所支持的中断向量,即将BIOS 提供的中断历程的入口地址登记在中断向量表中。

硬件系统检测和初始化完成后,调用INT 19H 进行操作系统的引导。

如果设为从软盘启动操作系统,则INT 19H 将主要完成一下工作:

( 1 )控制0 号软驱,读取软盘0 道0 面 1 扇区的内容到0 :7C 00 。

( 2 )将CS:IP 指向0 :7C 00 。

软盘的0 道0 面 1 扇区中装有操作系统引导程序。INT 19H 将其装到0 :7C 00 处后,设置CPU 从0 :7C 00 开始执行此处的引导程序,操作系统被激活,控制计算机。

如果在0 号软驱中没有软盘,或发生软盘I/O 错误,则INT 19H 将主要完成以下工作;

(1) 读取硬盘C 的0 道0 面1 扇区的内容到0 :7C 00 ;

(2) 将CS:IP 指向0 :7C 00 。

这次课程设计的任务是编写一个可以自行启动计算机,不需要在现有操作系统环境中运行的程序。改程序的功能如下:

( 1 )列出功能选项,让用户通过键盘进行选择,界面如下:

1 )reset pc ; 重新启动计算机

2 )Start system ; 引导现有的操作系统

3 )Clock ; 进入时钟程序

4 )Srt clock ; 设置时间

( 2 )用户输入“ 1 ”后重新启动计算机。(提示:考虑FFFF:0 )

( 3 )用户输入“ 2 ” 后引导现有的操作系统。(提示:考虑硬盘 C 的0 道0 面 1 扇区)( 4 )用户输入“ 3 ”后,执行动态现实当前日期,时间的程序。

现实格式如下:年/ 月/ 日时:分:秒

进入此项功能后,一直动态现实当前的时间,在屏幕上将出现时间按秒变化的效果。(提示:循环读取CMOS )

当按下F1 键后,改变现实颜色;按下ESC 键后,返回到主选单。(提示:利用键盘中断)( 5 )用户输入“ 4 ”后可更改当前的日期,时间,更改后返回到主选单。(提示:输入字符串)

下面给出的几点建议:

( 1 )在DOS 下编写安装程序,在按转程序中包含任务程序;

( 2 )运行安装程序,将任务程序写到软盘上;

( 3 )若要任务程序可以在开机后自行执行,要将它写到软盘的0 道0 面 1 扇区上。如果程序长度大于512B ,则需要用多个扇区存放,这种情况下,处于软盘0 道0 面 1 扇区中的程序就必须负责将其他扇区中的内容读入内存。

这个程序较为复杂,它用到了我们所学到的所有技术,需要进行仔细地分析和耐心地调试。这个程序对于我们的整个学习过程是具有总结性的,希望读者能够尽力完成。

assume cs:code

code segment

start:mov bx,512

mov ax,offset boot_end-offset boot

mov dx,0

div bx

cmp dx,0

je w_floppy

inc ax

w_floppy:mov bx,cs

mov es,bx

mov bx,offset boot-offset start

mov ch,0

mov cl,1

mov dh,0

mov dl,0

mov ah,3

int 13h

mov ax,4c00h

int 21h

boot:

;Load the floppy data to 0:7c00h+200h

;This boot loader is more than 512b

; So it is can not save in one sector

mov bx,512

mov ax,offset boot_end-offset boot

mov dx,0

div bx

cmp ax,0

je load_ok

cmp dx,0

je r_floppy

inc ax

r_floppy:cmp ax,1

jna load_ok

mov bx,0

mov es,bx

mov bx,7c00h+200h

dec al

mov ch,0

mov cl,2

mov dh,0

mov dl,0

mov ah,2

int 13h

load_ok:mov bx,0

push bx

mov bx,offset b_start-offset boot+7c00h

push bx

retf

;Define the boot menu

b_menu1:db "1) Reset PC",0

b_menu2:db "2) Start system",0

b_menu3:db "3) Clock",0

b_menu4:db "4) Set clock",0

b_menu5:db "Please enter your choice:[1-4]",0

time_str:db "yy/mm/dd hh:mm:ss",0

set_clock_p:db "Please enter the new time(yy/mm/dd hh:mm:ss):",0

set_clock_s:db "__/__/__ __:__:__",0

set_clock_top dw 0

menu_tab dw offset b_menu1-offset boot+7c00h,offset b_menu2-offset boot+7c00h,offset b_menu3-offset boot+7c00h,offset b_menu4-offset boot+7c00h,offset b_menu5-offset boot+7c00h

fun_table dw offset reset_pc-offset boot+7c00h,0,200h,0,offset clock-offset boot+7c00h,0,offset set_clock-offset boot+7c00h,0

org_int9_addr dw 0,0

b_start:

;Clear Screen first

call clear

;Copy the code that load the system to 0:200

mov ax,0

mov ds,ax

mov si,offset load_sys-offset boot+7c00h

mov ax,0

mov es,ax

mov di,200h

mov cx,offset load_sys_end-offset load_sys

cld

rep movsb

;Show boot menu

mov dh,5

mov cx,5

mov bx,0

b_s:mov dl,12

push cx

mov ax,0

mov ds,ax

push bx

add bx,bx

add bx,offset menu_tab-offset boot+7c00h

mov si,[bx]

call show_str

pop bx

pop cx

inc bx

inc dh

loop b_s

;Get the user input

choice: mov ah,0

int 16h

cmp al,'1'

jb choice

cmp al,'4'

ja choice

;Clear Screen first

call clear

;Call the sub function

sub al,'1'

mov bl,4

mul bl

mov si,ax

mov bx,offset fun_table-offset boot+7c00h

call dword ptr es:[bx][si]

boot_ok:mov ax,4c00h

int 21h

; Reset PC

; Param: none

; Return: none

reset_pc:

pop bx ;ip

pop bx ;cs

mov bx,0ffffh

push bx

mov bx,0

push bx

retf

; Load the system

; Param: none

; Return: none

load_sys:

mov ah,2

mov al,1

mov ch,0

mov cl,1

mov dh,0

mov dl,80h

mov bx,0

mov es,bx

mov bx,7c00h

int 13h

pop ax

pop ax

mov ax,0

push ax

mov ax,7c00h

push ax

retf

load_sys_end:nop

;Clock

;Param: none

;Return: none

clock: push ax

push ds

push si

push bx

push dx

push cx

mov ax,0

mov ds,ax

;Save the int9 table

mov bx,offset org_int9_addr-offset boot+7c00h

mov ax,ds:[9*4]

mov ds:[bx],ax

mov ax,ds:[9*4+2]

mov ds:[bx+2],ax

;set the int9 table

mov ax,offset int9-offset boot+7c00h

mov ds:[9*4],ax

mov ax,0

mov ds:[9*4+2],ax

clock_s:

mov si,offset time_str-offset boot+7c00h

call curr_time

mov si,offset time_str-offset boot+7c00h

mov dh,12

mov dl,30

call show_str

call delay

jmp clock_s

pop cx

pop dx

pop bx

pop si

pop ds

pop ax

retf

;Get current time

;Param: ds:si-The time string buffer

;Return: none

curr_time:

push bx

push ax

push es

push si

mov ax,0

mov es,ax

;year

mov al,9

call ram_bcd

;month

add si,3

mov al,8

call ram_bcd

;day

add si,3

mov al,7

call ram_bcd

;hour

add si,3

mov al,4

call ram_bcd

;minute

add si,3

mov al,2

call ram_bcd

;second

add si,3

mov al,0

call ram_bcd

pop si

pop es

pop ax

pop bx

ret

;Key baord interruption

int9: push ax

push ds

push si

push cx

mov ax,0

mov ds,ax

in al,60h

pushf

mov si,offset org_int9_addr-offset boot+7c00h

call dword ptr ds:[si]

cmp al,01h

je boot_menu

cmp al,3bh

je bg_color

jmp int9_ok

bg_color:

mov ax,0b800h

mov ds,ax

mov si,0

mov cx,2000

mov al,ds:[si+1]

inc al

and al,00000111b

bg_c_s: mov ds:[si+1],al

add si,2

loop bg_c_s

jmp int9_ok

boot_menu:

;set the int9 table

mov bx,offset org_int9_addr-offset boot+7c00h

mov ax,ds:[bx]

mov ds:[9*4],ax

mov ax,ds:[bx+2]

mov ds:[9*4+2],ax

pop cx

pop si

pop ds

pop ax

pop ax

pop ax

popf

mov ax,0

push ax

mov ax,7c00h

push ax

retf

int9_ok:pop cx

pop si

pop ds

pop ax

iret

int9_end:nop

;Set clock to CMOS ram

;Param: none

;return: none

set_clock:

push ax

push dx

push ds

push si

push bx

push di

push es

push cx

;Show the header

mov ax,0

mov ds,ax

mov si,offset set_clock_p-offset boot+7c00h

mov dh,12

mov dl,0

call show_str

;Init the input time string

mov si,offset set_clock_s-offset boot+7c00h

mov ax,0

mov es,ax

mov di,offset time_str-offset boot+7c00h

mov cx,17

cld

rep movsb

;Show the input time string

mov dh,13

mov dl,0

mov si,offset time_str-offset boot+7c00h

call show_str

;Set time string top

mov di,offset set_clock_top-offset boot+7c00h;

mov word ptr ds:[di],0

;set the time string

clock_i_s:mov ah,0

int 16h

cmp ah,1ch

je set_clock_ok

cmp ah,0eh

je back_space

mov si,offset time_str-offset boot+7c00h

call input_char

;Show String

show_clock_str:

mov si,offset time_str-offset boot+7c00h

call show_str

jmp clock_i_s

back_space:

mov si,offset time_str-offset boot+7c00h

call del_char

jmp show_clock_str

set_clock_ok:

;Save the string to CMOS RAM

mov di,offset set_clock_top-offset boot+7c00h;

cmp word ptr ds:[di],17

jb set_clock_ret

mov si,offset time_str-offset boot+7c00h

call save_time

set_clock_ret:

pop cx

pop es

pop di

pop bx

pop si

pop ds

pop dx

pop ax

pop ax ;ip

pop ax ;cs

mov ax,0

push ax

mov ax,7c00h

push ax

retf

;Save the time string to CMOS ram

;Param: ds:si-The time string

;retunr:none

save_time:

push ax

push es

push bx

mov ax,0

mov es,ax

;Years

mov al,9

call write_cmos

;month

add si,3

mov al,8

call write_cmos

;day

add si,3

mov al,7

call write_cmos

;hour

add si,3

mov al,4

call write_cmos

;minute

add si,3

mov al,2

call write_cmos

;minute

add si,3

mov al,0

call write_cmos

pop bx

pop es

pop ax

ret

;Input a char to the buffer

;param: al-The input char

; ds:si-The address that save the char ;Return:none

input_char:

push di

push bx

push es

mov bx,0

mov es,bx

cmp al,'0'

jb input_ok

cmp al,'9'

ja input_ok

mov di,offset set_clock_top-offset boot+7c00h;

mov bx,es:[di]

cmp byte ptr ds:[bx+si],0

je input_ok

cmp byte ptr ds:[bx+si],' '

je fill_pre

cmp byte ptr ds:[bx+si],'/'

je fill_pre

cmp byte ptr ds:[bx+si],':'

je fill_pre

jmp fill_buff

fill_pre:inc bx

fill_buff:mov byte ptr ds:[bx+si],al

inc bx

mov es:[di],bx

input_ok:pop es

pop bx

pop di

ret

;Delete a char to the buffer

;param: al-The delete char

; ds:si-The address that save the char

;Return:none

del_char:

push di

push bx

push es

mov es,bx

mov di,offset set_clock_top-offset boot+7c00h;

mov bx,es:[di]

cmp bx,0 ;Have been empty

je del_ok

dec bx

cmp byte ptr ds:[bx+si],' '

je del_pre

cmp byte ptr ds:[bx+si],'/'

je del_pre

cmp byte ptr ds:[bx+si],':'

je del_pre

jmp del_buff

del_pre:dec bx

del_buff:mov byte ptr ds:[bx+si],'_'

mov es:[di],bx

del_ok:pop es

pop bx

pop di

ret

;Show string to the screen

;Param: dh=line number

; dl=column number

; ds:si pointer to the string address

;return: none

show_str:

push ax

push bx

push es

push bp

push di

push cx

mov ax,0B800h

mov es,ax

;line address

mov bl,160

mov al,dh

mul bl

;column address

mov bl,2

mov al,dl

mul bl

mov di,ax

str: mov cl,[si]

mov ch,0

jcxz ok

mov es:[bp+di],cl

inc si

add di,2

jmp str

ok: pop cx

pop di

pop bp

pop es

pop bx

pop ax

ret

;Delay sime time

;Parma: none

;Return none

delay: push ax

push dx

mov ax,0

mov dx,1h

d_s: cmp ax,0

jne d_next

cmp dx,0

je d_ok

d_next: sub ax,1

sbb dx,0

jmp d_s

d_ok: pop dx

pop ax

ret

;get the CMOS ram BCD data

;param:al-the ram no. that will be read

;return:ds:si-the string that contain the string ram_bcd:

push si

push cx

out 70h,al

in al,71h

mov ah,al

mov cl,4

shr ah,cl

add ah,30h

mov [si],ah

inc si

and al,00001111b

add al,30h

mov [si],al

pop cx

pop si

ret

;Write to CMOS

;param:al-the ram no. that will be read

; ds:si-the string that contain the string ;retunr:none

write_cmos:

push si

push cx

push bx

mov bl,ds:[si]

sub bl,30h

mov cl,4

shl bl,cl

mov bh,ds:[si+1]

sub bh,30h

or bl,bh

out 70h,al

mov al,bl

out 71h,al

pop bx

pop cx

pop si

ret

; Clear screen

;Param:none

;return:none

clear: push ds

push bx

push cx

push ax

mov ax,0B800h

mov ds,ax

mov bx,0

mov cx,2000

next_space:mov byte ptr [bx],' '

mov byte ptr [bx+1],7

add bx,2

loop next_space

pop ax

pop cx

pop bx

pop ds

ret

boot_end:nop

code ends

end start

汇编语言 第二版 王爽 完整答案

第1章基础知识 检测点1.1 (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13。 (2)1KB的存储器有1024个存储单元。存储单元的编号从0到1023。 (3)1KB的存储器可以存储1024*8个bit,1024个Byte。 (4)1GB、1MB、1KB分别是2^30、2^20、2^10 Byte。(n^m的意思是n的m次幂) (5)8080、8088、80286、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)在存储器中,数据和程序以二进制形式存放。 第2章寄存器答案 检测点2.1 (1) 写出每条汇编指令执行后相关寄存器中的值。 mov ax,62627 AX=F4A3H mov ah,31H AX=31A3H mov al,23H AX=3123H add ax,ax AX=6246H mov bx,826CH BX=826CH mov cx,ax CX=6246H mov ax,bx AX=826CH add ax,bx AX=04D8H mov al,bh AX=0482H mov ah,bl AX=6C82H add ah,ah AX=D882H add al,6 AX=D888H add al,al AX=D810H mov ax,cx AX=6246H (2) 只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。 解: mov ax,2 add ax,ax add ax,ax add ax,ax 检测点2.2 (1) 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为00010H到1000FH。 (2) 有一数据存放在内存 20000H 单元中,先给定段地址为SA,若想用偏移地址寻到此单元。

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

第一章基础知识 检测点(第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次方) 第二章寄存器(CPU工作原理) 检测点(第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 检测点(第23页) ---------------------- (1)00010H,1000FH (2)1001H,2000H 第2题说明: 因为段的起始地址要为16的倍数。所以当段地址小于1001H或大于2000H时CPU都无法寻到。 检测点(第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个字节单元中)处。此生产日期不能被改变,因为其具有‘只读’属性。 (4) 通过向内存中的显存写入数据,使计算机根据写入的数据进行ASCII转换,并将转换后且可打印的字符输出到屏幕上。<注:关于显存的详细讨论不在此题范围> 第三章寄存器(内存访问) 检测点(第52页) ---------------------- (1)(题目:略) 第一空:2662H 第二空:E626H 第三空:E626H 第四空:2662H 第五空:D6E6H 第六空:FD48H 第七空:2C14H 第八空:0000H 第九空:00E6H 第十空:0000H 第十一空:0026H 第十二空:000CH 提示:此题可在DEBUG中利用E命令在本机上按照题目中所给出的内存单元及其数据进行相应地修改,然后再用A命令进行写入(题目中所给出的)相应的汇编指令,最后再进行T命令进行逐步执行,以查看相应结果。

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

0000:0203 8ED8 MOV DS,AX 0000:0205 B82000 MOV AX,0020 0000:0208 8EC0 MOV ES,AX 0000:020A BB0000 MOV BX,0000 0000:020D B91800 MOV CX,0018 0000:0210 8A07 MOV AL,[BX] 0000:0212 26 ES: 0000:0213 8807 MOV [BX],AL 0000:0215 43 INC BX 0000:0216 E2F8 LOOP 0210 0000:0218 0000 ADD [BX+SI],AL 0000:021A 0000 ADD [BX+SI],AL 0000:021C 0000 ADD [BX+SI],AL 0000:021E 0000 ADD [BX+SI],AL -q 检测点6.1 (1) 下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序: assume cs:codesg codesg segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h start: mov ax,0 mov ds,ax mov bx,0 mov cx,8 s: mov ax,[bx]

mov cs:[bx],ax add bx,2 loop s mov ax,4c00h int 21h codesg ends end start (2) 下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。完成程序: assume cs:codesg codesg segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h dw 0,0,0,0,0,0,0,0,0,0 ;10个字单元用栈空间 start: mov ax,cs mov ss,ax mov sp,36 mov ax,0 mov ds,ax mov bx,0 mov cx,8 s: push [bx]

王爽《汇编语言》第1章DOC版

第1章基础知识 汇编语言是直接在硬件之上工作的编程语言,首先要了解硬件系统的结构,才能有效地应用汇编语言对其编程。在本章中,对硬件系统结构的问题进行一部分的探讨,以使后续的课程可在一个好的基础上进行。当课程进行到需要补充新的基础知识(关于编程结构或其他的)时候,再对相关的基础知识进行介绍和探讨。本书的原则是,以后用到的知识,以后再说。 在汇编课程中不对硬件系统进行全面和深入的研究,因为这不在本课程的范围之内。关于PC机及CPU物理结构和编程结构的全面研究,在《微机原理与接口》中进行;对于计算机一般的结构、功能、性能的研究在一门称为《组成原理》的理论层次更高的课程中进行。汇编课程的研究重点放在如何利用硬件系统的编程结构和指令集有效灵活地控制系统进行工作。 1.1 机器语言 说到汇编语言的产生,首先要讲一下机器语言。机器语言是机器指令的集合。机器指令展开来讲就是一台机器可以正确执行的命令。电子计算机的机器指令是一列二进制数字。计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动,进行运算。 上面所说的计算机指的是可以执行机器指令,进行运算的机器。这是早期计算机的概念。现在,在常用的PC机中,有一个芯片来完成上面所说的计算机的功能。这个芯片就是我们常说的CPU(Central Processing Unit,中央处理单元),CPU是一种微处理器。以后我们提到的计算机是指由CPU和其他受CPU直接或间接控制的芯片、器件、设备组成的计算机系统,比如我们最常见的PC机。 每一种微处理器,由于硬件设计和内部结构的不同,就需要用不同的电平脉冲来控制,使它工作。所以每一种微处理器都有自已的机器指令集,也就是机器语言。 早期的程序设计均使用机器语言。程序员们将用0、1数字编成的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。 应用8086CPU完成运算s=768+12288-1280,机器码如下: 101100000000000000000011 000001010000000000110000 001011010000000000000101 假如将程序错写成以下这样,请读者找出错误。 101100000000000000000011 000001010000000000110000 000101101000000000000101

汇编语言-王爽-完美高清版视频教程

汇编语言》-王爽-完美高清版-零基础汇编语言入门书籍PDF格式 同时按ctrl+要下载的地址既可下载对应的视频 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f61cb107c8 001第一章- 基础知识01 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f6806f45b8 002第一章- 基础知识02 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f6ec42d4d3 003第一章- 基础知识03 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f6deb05ec4 004第一章-基础知识04 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f6e51f6838 005第一章- 基础知识05 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f66edaf8d3 006第二章- 寄存器(CPU工作原理)01 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f6d07e07b9 007第二章- 寄存器(CPU工作原理)02 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f6d7f585a8 008第二章- 寄存器(CPU工作原理)03 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f639d8b3cf 009第二章- 寄存器(CPU工作原理)04 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f6dcadbde6 010第二章- 寄存器(CPU工作原理)05 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f6ea3f01c1 011第二章- 寄存器(CPU工作原理)06 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f65b96a06f 012第二章- 寄存器(CPU工作原理)07 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f682da085a 013第三章- 寄存器(内存访问)01 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f6486e698 014第三章- 寄存器(内存访问)02 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f6b7491d9f 015第三章- 寄存器(内存访问)03 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f622b7f9a7 016第三章- 寄存器(内存访问)04 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f64e2424b9 017第三章- 寄存器(内存访问)05 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f6e5132d4d 018第三章- 寄存器(内存访问)06 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f655c10e86 019第三章- 寄存器(内存访问)07 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f6b22e64e6 020第四章- 第一个程序01 下载地址:https://www.wendangku.net/doc/4e4397634.html,/file/f6812126a4

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

第一章基础知识 检测点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次方) 第二章寄存器(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个字节单元中)处。此生产日期不能被改变,因为其具有‘只读’属性。 (4) 通过向内存中的显存写入数据,使计算机根据写入的数据进行ASCII转换,并将转换后且可打印的字符输出到屏幕上。<注:关于显存的详细讨论不在此题范围> 第三章寄存器(内存访问) 检测点3.1(第52页) ---------------------- (1)(题目:略) 第一空:2662H 第二空:E626H 第三空:E626H 第四空:2662H 第五空:D6E6H 第六空:FD48H 第七空:2C14H 第八空:0000H 第九空:00E6H 第十空:0000H 第十一空:0026H 第十二空:000CH 提示:此题可在DEBUG中利用E命令在本机上按照题目中所给出的内存单元及其数据进行相应地修改,然后再用A命令进行写入(题目中所给出的)相应的汇编指令,最后再进行T命令进行逐步执行,以查看相应结果。

汇编语言(第2版)王爽著 课后实验报告详解

汇编语言实验报告 : 班级学号 学生姓名 提交日期 成 绩

实验1-1如下: 用E命令将指令写入内存:

用A命令将指令写入内存: 实验1-2代码如下: 用a命令在2000:0000处写如要写如的代码,然后用R命令来修改CS为2000,IP修改为0,然后用T命令执行,直到AX中的值为10,因为是默认为十六进制,所以ax中的0010实际代表十进制的16。如图:

实验1-3: 用D 命令输入内存fff0h~fffffh,则可看到:

生产日期为06/15/09在地址为FFFF5~FFFF12处,现在用E命令随便修改一下有: 在window7下虚拟的dos中可以改,但如果重新打开dos中的debug 则日期任然不会改变,因为那是ROM。 实验1-4代码如下:

内存地址为B800:0开始的为显存,是RAM,可以改变其值来在屏幕中显示,其中这一个字符占两个字节,前一个(低)为字符的ASCII 码,后一个(高)为要显示的颜色,内存B800:0和B800:1这两个字节对应着屏幕中的第一个字符的位置,依次类推,每个屏幕的行有80个字符,对应的内存占160个字节 实验2-1:(按实验结果填空) Mov ax,ffff Mov ds,ax Mov ax,2200 Mov ss,ax Mov sp,0100 Mov ax,[0] ;ax=5BEA Add ax,[2] ;ax=5CCA Mov bx,[4] ;bx=30F0 Add bx,[6] ;bx=6026 Push ax ;sp=00FE; 修改的内存单元的地址是2200:00FE 内容是5CCA Push bx ;sp=00FC; 修改的内存单元的地址是2200:00FC内容是6026 Pop ax ;sp=00FE; ax=6026. Pop bx ;sp=0100; bx=.5CCA Push [4] ;sp=00FE; 修改的内存单元的地址是2200:00FE内容是30F0 Push [6] ;sp=00FC; 修改的内存单元的地址是2200:00FC内容是2F36 实验截图如下:

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

检测点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,62627 AX=F4A3H mov ah,31H AX=31A3H mov al,23H AX=3123H add ax,ax AX=6246H mov bx,826CH BX=826CH mov cx,ax CX=6246H mov ax,bx AX=826CH add ax,bx AX=04D8H mov al,bh AX=0482H mov ah,bl AX=6C82H

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

补全编程,利用jcxz指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。 assume cs:code code segment start: mov ax,2000h mov ds,ax mov bx,0 s: mov ch,0 mov cl,[bx] jcxz ok ;当cx=0时,CS:IP指向OK inc bx jmp short s ok: mov dx,bx mov ax ,4c00h int 21h code ends end start 检测点9.3 补全编程,利用loop指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。 assume cs:code code segment start: mov ax,2000h mov ds,ax mov bx,0 s:mov cl,[bx] mov ch,0 inc cx inc bx loop s ok:dec bx mov dx,bx mov ax,4c00h int 21h code ends end start 书P101,执行loop s时,首先要将(cx)减1。 “loop 标号”相当于 dec cx if((cx)≠0) jmp short 标号 检测点10.1 补全程序,实现从内存1000:0000处开始执行指令。 assume cs:code stack segment db 16 dup (0) stack ends code segment start: mov ax,stack mov ss,ax mov sp,16 mov ax, 1000h

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

AX=0008 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=2000 IP=0005 NV UP EI PL NZ NA PO NC 2000:0005 EBFC JMP 0003 -t AX=0008 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=2000 IP=0003 NV UP EI PL NZ NA PO NC 2000:0003 01C0 ADD AX,AX -q 实验一查看CPU和内存,用机器指令和汇编指令编程 (3) 查看内存中的内容 PC主板上的ROM中有个一出产日期,在内存FFF00H-FFFFFH的某几个单元中,请找到这个出产日期并试图改变它。 Microsoft(R) Windows DOS (C)Copyright Microsoft Corp 1990-2001. C:\DOCUME~1\ADMINI~1>debug -d ffff:0 f FFFF:0000 EA 5B E0 00 F0 31 32 2F-32 35 2F 30 37 00 FC 59 .[...12/25/07..Y -q 地址C0000~FFFFF的内存单元为只读存储器,写入数据操作是无效的。 因此出产日期无法改变。 下面内容摘自于网上 还有另一种情况,如果你发现你能修改ROM中的生产日期,那么原因如下: 每个计算机的结构都不一样,教材考虑的是普通8086PC机上的效果,个别计算机的效果可能不同。 也就是说在你的计算机中这个内存是可修改的 所以,认为所有的计算机某些地址的内存不能修改是片面的。 书上说rom是只读的你就不去验证了吗?如何验证呢? 我觉得这个实验最大的好处不是让我们验证了这个知识点,而是提醒我们要有怀疑的精神,怀疑之后再去验证才能跟深刻的理解知识,提升自己的能力,甚至还会发现有些书上描述的不准确甚至错误的地方。

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

01 d8 add ax,bx ax=8236H 89 c3 mov bx,ax bx=8236H 01 d8 add ax,bx ax=046CH b8 1a 00 mov ax,001AH ax=001AH bb 26 00 mov bx,0026H bx=0026H 00 d8 add al,bl ax=0040H 00 dc add ah,bl ax=2640H 00 c7 add bh,al bx=4026H b4 00 mov ah,0 ax=0040H 00 d8 add al,bl ax=0066H 04 9c add al,9CH ax=0002H Microsoft(R) Windows DOS (C)Copyright Microsoft Corp 1990-2001. C:\DOCUME~1\ADMINI~1>debug -a 0C1C:0100 mov ax,4e20 0C1C:0103 add ax,1416 0C1C:0106 mov bx,2000 0C1C:0109 add ax,bx 0C1C:010B mov bx,ax 0C1C:010D add ax,bx 0C1C:010F mov ax,001a 0C1C:0112 mov bx,0026 0C1C:0115 add al,bl 0C1C:0117 add ah,bl 0C1C:0119 add bh,al 0C1C:011B mov ah,0 0C1C:011D add al,bl 0C1C:011F add al,9c 0C1C:0121 -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0100 NV UP EI PL NZ NA PO NC 0C1C:0100 B8204E MOV AX,4E20

《汇编语言》学习笔记(清华大学 王爽)

清华大学《汇编语言》(王爽)读书笔记 第一章基础知识 ◎汇编语言由3类指令组成 汇编指令:机器码的助记符,有对应机器码。 伪指令:没有对应机器码,由编译器执行,计算机并不执行 其他符号:如+-*/,由编译器识别,没有对应机器码 ◎一个CPU有n根地址线,则可以所这个CPU的地址线宽度为n,这样的CPU最多可以寻找2的n 次方个内存单元。 ◎ 1K=2^10B 1M=2^20B 1G=2^30B ◎8086 CPU地址总线宽度为20,寻址范围为00000~FFFFF 00000~9FFFF 主存储器地址空间(RAM) A0000~BFFFF 显存地址空间 C0000~FFFFF 各类ROM地址空间 第二章寄存器(CPU工作原理) ◎16位结构描述了一个CPU具有下面几个方面的结构特性 运算器一次最多可以处理16位的数据 寄存器的最大宽度为16位 寄存器和运算器之间的通路为16位 ◎8086有20位地址总线,可以传送20位地址,达到1M的寻址能力。采用在内部用两个16位地址合成的方法来形成一个20位的物理地址 ◎物理地址 = 段地址 × 16 + 偏移地址 ◎在编程是可以根据需要,将若干地址连续的内存单元看作一个段,用段地址×16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元。段地址×16必然是16的倍数,所以一个段的起始地址也一定是16的倍数;偏移地址位16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB ◎8086有四个段寄存器 CS、DS、SS、ES ◎CS为代码段寄存器,IP为指令指针寄存器。任意时刻,设CS中内容为M、IP中内容为N,8086CPU从内存M×16+N读取一条指令执行 ◎不能用mov修改CS、IP,因为8086CPU没有提供这样功能,可用指令JMP 段地址:偏移地址。JMP 2AE3:3 JMP AX 修改IP 第三章寄存器(内存访问) ◎DS数据段寄存器。不能将数据直接送入段寄存器,所以『MOV DS, 1』不正确 ◎字在存储时要两个连续的内存单元,低位在低地址,高位在高地址 ◎[address]表示一个偏移地址为address的内存单元 ◎SS:SP指向栈顶元素 ◎PUSH AX:(1)SP = SP - 2;(2)AX送入SS:SP ◎POP AX:(1)SS:SP送入AX;(2)SP = SP + 2 ◎PUSH/POP 寄存器 PUSH/POP 段寄存器 PUSH/POP 内存单元 第四章第1个程序 ◎可执行文件包含两部分:程序和数据,相关的描述信息 ◎程序加载后, ds中存放这程序所在内存区的段地址,这个内存区的偏移地址为0,策程序所在的内存区的地址为ds:0;这个内存区的前256个字节中存放的是PSP,dos用来和程序进行通信。从256字节处向后的空间存放的是程序。 第五章 [BX]和loop指令 ◎[BX]表示一个内存单元,它的段地址在ds中,偏移地址在bx中。MOV AX,[BX] MOV AL,[BX]

汇编语言第二版王爽完整答案

薈芃莃肆蒀膁蚃第1章基础知识 检测点1.1 (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13。 (2)1KB的存储器有1024个存储单元。存储单元的编号从0到1023。 (3)1KB的存储器可以存储1024*8个bit,1024个Byte。 (4)1GB、1MB、1KB分别是2^30、2^20、2^10 Byte。(n^m的意思是n的m次幂) (5)8080、8088、80286、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)在存储器中,数据和程序以二进制形式存放。 莅羈膇膃蚅莅聿第2章寄存器答案 检测点2.1 (1) 写出每条汇编指令执行后相关寄存器中的值。 mov ax,62627 AX=F4A3H mov ah,31H AX=31A3H mov al,23H AX=3123H add ax,ax AX=6246H mov bx,826CH BX=826CH mov cx,ax CX=6246H mov ax,bx AX=826CH add ax,bx AX=04D8H mov al,bh AX=0482H mov ah,bl AX=6C82H add ah,ah AX=D882H add al,6 AX=D888H add al,al AX=D810H mov ax,cx AX=6246H (2) 只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。 解: mov ax,2 add ax,ax add ax,ax add ax,ax 检测点2.2 (1) 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为00010H到1000FH。 (2) 有一数据存放在内存 20000H 单元中,先给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为1001H,最大为2000H。 检测点2.3

汇编语言王爽检测点答案

汇编语言王爽检测点答案 第一章.检测点1.1 (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) 二进制 注:符号'^'指求幂运算(如: 2^30指2的30次方) 第二章 检测点2.1 (1)大家做这题的时候一定要注意,要看清楚数制,比如是二进制还是十进制,还是十六进,我当时没注意,做错了!!呵呵!! 第一空:F4A3H 第二空:31A3H 第三空:3123H 第四空:6246H 第五空:826CH 第六空:6246H 第七空:826CH 第八空:04D8H 第九空:0482H 第十空:6C82H 第十一空:D882H 第十二空:D888H 第十三空:D810H 第十四空:6246H (2) mov ax,2 add ax,ax add ax,ax add ax,ax

检测点2.2 (1)00010H 1000fH (2)0001H 2000H 检测点2.3 共修改了4次ip 第一次mov ax,bx 第二次是sub ax,ax 第三次是jmp ax 第四次是执行 jmp ax 最后ip的值是0 因为ax的值是零!! 检测点3.1 (1) 第一空:2662H 第二空:E626H 第三空:E626H 第四空:2662H 第五空:D6E6H 第六空:FD48H 第七空:2C14H 第八空:0000H 第九空:00E6H 第十空:0000H 第十一空:0026H 第十二空:000CH 注意:ax中存取的是字型数据,高地址存放高字节,低地址存放低字节!!(一定要小心)

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

0C1C:0117 00DC ADD AH,BL -t AX=2640 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0119 NV UP EI PL NZ NA PO NC 0C1C:0119 00C7 ADD BH,AL -t AX=2640 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011B NV UP EI PL NZ NA PO NC 0C1C:011B B400 MOV AH,00 -t AX=0040 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011D NV UP EI PL NZ NA PO NC 0C1C:011D 00D8 ADD AL,BL -t AX=0066 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011F NV UP EI PL NZ NA PE NC 0C1C:011F 049C ADD AL,9C -t AX=0002 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0121 NV UP EI PL NZ AC PO CY 0C1C:0121 D3990075 RCR WORD PTR [BX+DI+7500],CL DS:B526=0000 -q 实验一查看CPU和内存,用机器指令和汇编指令编程 (2)将下面的3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。 mov ax,1 add ax,ax jmp 2000:0003 Microsoft(R) Windows DOS (C)Copyright Microsoft Corp 1990-2001. C:\DOCUME~1\ADMINI~1>debug -a 2000:0 2000:0000 mov ax,1 2000:0003 add ax,ax 2000:0005 jmp 2000:0003

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

汇编语言答案(王爽) 第一章 检测点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=F4A3H mov ah,31H AX=31A3H mov al,23H AX=3123H

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

--引用这几本书综合研究的三个问题: 都再用,我们就非得用吗? 规定了,我们就只知道遵守吗? 司空见惯,我们就不怀疑了吗? 尽信书不如无书大概也有这个道理吧^_^ 检测点3.1 (1) 在DEBUG中,用"D 0:0 lf" 查看内存,结果如下: 0000:0000 70 80 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 60 0000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88 下面的程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值mov ax,1 mov ds,ax mov ax,[0000] ax= 2662H mov bx,[0001] bx= E626H mov ax,bx ax= E626H mov ax,[0000] ax= 2662H mov bx,[0002] bx= D6E6H add ax,bx ax= FD48H add ax,[0004] ax= 2C14H mov ax,0 ax= 0 mov al,[0002] ax= 00e6H mov bx,0 bx= 0 mov bl,[000c] bx= 0026H add al,bl ax= 000CH 用DEBUG进行验证: Microsoft(R) Windows DOS (C)Copyright Microsoft Corp 1990-2001. C:\DOCUME~1\000>debug -e 0000:0 0000:0000 68.70 10.80 A7.f0 00.30 8B.ef 01.60 70.30 00.e2 0000:0008 16.00 00.80 AF.80 03.12 8B.66 01.20 70.22 00.60

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

add ah,ah AX=D882H add al,6 AX=D888H add al,al AX=D810H mov ax,cx AX=6246H Microsoft(R) Windows DOS (C)Copyright Microsoft Corp 1990-2001. C:\DOCUME~1\ADMINI~1>debug -a 0C1C:0100 mov ax,f4a3 0C1C:0103 mov ah,31 0C1C:0105 mov al,23 0C1C:0107 add ax,ax 0C1C:0109 mov bx,826c 0C1C:010C mov cx,ax 0C1C:010E mov ax,bx 0C1C:0110 add ax,bx 0C1C:0112 mov al,bh 0C1C:0114 mov ah,bl 0C1C:0116 add ah,ah 0C1C:0118 add al,6 0C1C:011A add al,al 0C1C:011C mov ax,cx 0C1C:011E -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0100 NV UP EI PL NZ NA PO NC 0C1C:0100 B8A3F4 MOV AX,F4A3 -t AX=F4A3 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0103 NV UP EI PL NZ NA PO NC 0C1C:0103 B431 MOV AH,31 -t AX=31A3 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0105 NV UP EI PL NZ NA PO NC

相关文档
相关文档 最新文档