汇编语言第3版王爽pdf 王爽 课程设计一 多少行代码

王爽汇编语言课程设计1
assume cs:code,ds:data,ss:stack
stack segment
& dw 128 dup (0)
stack ends
data segment
'1975','1976','1977','1978','1979','1980','1981','1982','1983'
'1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
16,22,382,00,,,514
827,,,5937000
3,7,9,13,28,38,130,220,476,778,58,35,8226
db 16 dup (0)
code segment
& mov ax,0600h
& mov bh,00
& mov cx,0000h
& mov dx,184fh
& int 10h & &
& mov ah,2
& mov bh,0
& mov dh,0
& mov dl,12
& int 10h & &
& 以上为调用中断清除屏幕
& mov ax,data
& mov ds,ax & &
& mov ax,0b800h
& mov es,ax & &
& mov ah,07h & &
&; 设定颜色值 &
& mov bx,0
& mov si,0 &
& mov cx,21 &
& & & s:push cx
;cx入栈保护
& mov di,0 & &
& mov cx,4 &
& &s1:mov al,[si]
& mov es:[bx+di],al
& mov es:[bx+di].1,ah &
;assigment
& add di,2
& add bx,160
& pop cx & &
& ;-----显示年份----
& mov ax,stack
& mov ss,ax
& mov sp,32
& mov ax,data
& mov ds,ax
& mov bx,0 & &
& mov si,0
& mov di,0 &
& mov cx,21 &
& & s3: mov dx,86[di]
& mov ax,84[di]
& call dtoc
& call show_str
& add di,4
& add bx,160
& &;-----显示总收入-----
& mov bx,20 &
& mov si,0
& mov di,0
& mov cx,21
& & &s4:mov
& mov ax,168[di]
& call dtoc
& call show_str
& add di,2
& add bx,160
;-----显示总人数
& mov bx,40
& mov si,0
& mov di,0
& mov cx,21
& & &s5:mov
& mov ax,84[di]
& div word ptr 168[si] ;计算人均收入,ax保存
& mov dx,0 & &
& &;为了调用dtoc子程序,把收入定为32bit
& call dtoc
& call show_str
& add si,2
& add di,4
& add bx,160
;------显示人均收入-----
& mov ax,4c00h
;;dtcoc功能把数字转化为十进制表示的字符串
;参数:dx =dword高十六位,ax=dword低十六位
&push si&;turn the dword to
decimal system string & &
&mov si,0 & &
& & ok:call divdw
&add cx,30h
&mov cx,ax
& &go3:inc si &
&jmp &short ok &
& &go1:mov cx,dx
&jcxz go2 & &
&; the go1 go2 go3 judge if the quotient is
&jmp go3 & &
&; if true,return
& &go2:inc si
&mov byte ptr 210[si],0
&mov cx,si
& &kkk:pop ax
&mov 210[si],al
&loop kkk & &
&;function :to reverse the number string
;show_str:在当前屏幕上显示字符串
show_str:push cx
& &push bx
& &push ax
& &push si
& &push di
& &mov si,0
& &mov di,0 &
& &mov ah,07h
& &add bx,20
& & & sh:mov
cl,210[di]
& &mov ch,0
& &jcxz gos
& &mov al,210[di]
& &mov es:[bx+si],al
& &mov es:[bx+si].1,ah
& &add si,2
& &jmp short sh
& & &gos:pop
& &pop si&
& &pop ax&
& &pop bx&
;divdw功能:进行不会溢出的除法运算,被除数为dword型,除数为word型,结果为dword型
;参数:ax=dword型数据的低16位,dx=dword型数据的高16位,cx=除数
;返回:dx=结果的高16位,ax=结果的低16位,cx=余数
divdw:push bx & &
& &;the parament is dx and
& mov cx,10 & &
& & & ;function:
big number divide
& mov bx,ax & &
& mov ax,dx & &
& mov dx,0 & &
& div cx & &
& push ax & &
& mov ax,bx & &
& div cx & &
& &; &ax store
the lower bits of the quotient
& mov cx,dx & &
&; &cx store the remainder
& pop dx & &
&; &dx store the higher bits of
quotient & & &
end start &
看完了王爽的《汇编语言》之后,终于又回头把第一个课程设计完成了,打算就此先放下汇编,也不知道这算不算是入门了。记得刚开始学的时候,我信誓旦旦的准备把借的关于汇编的三本书全部看完,到现在两个月过去了,总算是看完了第一本。另外两本从被我借回来就一直安静地躺在床头,一次也没被翻开过,想想也又要到期了,过两天还是把它们给还了吧。汇编就先这样吧,或许以后有时间的话,我还会pick
it up的。加油!!!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。王爽《汇编语言》课程设计一_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
王爽《汇编语言》课程设计一
&&王爽《汇编语言》这本书中的第一个课程设计,我自己写的,仅供参考
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩4页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢王爽《汇编语言》课程设计2_汇编吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:33,278贴子:
王爽《汇编语言》课程设计2收藏
要求:编写一个可以自行启动计算机,不需要在现有操作系统环境中运行的程序。 1)RESET PC 2)START SYSTEM 3)CLOCK 4)SET CLOCK思路:采用怎样的引导方式?是把所有任务程序复制到0:7C00处,还是把引导程序复制到0:7C00处,再执行引导程序把任务程序复制到别处内存?采用后一种方式。原因:程序的子功能2是从硬盘引导现有的操作系统,这需要把硬盘0面0道1扇区的内容复制到0:7C00处,也就覆盖了原来0:7C00处的内容,谁知道这时0:7C00处是什么内容呢?又怎样来重新定位CS:IP呢?存在的问题:1、在显示日期时,会在各个字符之间来回闪烁。在没有延时之前,更明显。这是什么原因呢?2、在CLS清屏子程序中,把MOV BYTE
PTR ES:[DI],0 中的BYTE改成WORD为什么会引发崩溃?
程序:ASSUME CS:SETUP;============================================================================================;安装程序 ;将引导所需的程序写入软盘SETUP SEGMENTSTART:;复制装载程序到软盘0面0道1扇区
MOV AX,LOADMOV ES,AXMOV BX,0;ES:BX指向要写的单元MOV DX,0 MOV CX,1 MOV AL,1 MOV AH,3 INT 13H;复制任务程序到软盘0面0道2~3扇区MOV AX,SYS MOV ES,AX ;BX没变 MOV CX,2 ;DX没变 MOV AL,2
MOV AH,3 INT 13H MOV AX,4C00H INT 21HSETUP ENDS;============================================================================================;============================================================================================;引导程序LOAD SEGMENT;装载任务程序到指定内存处(此处2000:0) ;此处程序应该按照0:7C00的观点来看 ;注意,这里是用软盘启动计算机,并没有DOS中断可用ASSUME CS:LOAD;读任务程序到2000:0 MOV AX,2000H MOV ES,AX MOV BX,0 PUSH AX PUSH BX MOV DX,0 MOV CX,2 MOV AL,2
MOV AH,2 INT 13H ;将CS:IP指向任务程序的首地址2000:0 RETF LOAD ENDS;============================================================================================
============================================================================================;任务程序 SYS SEGMENTASSUME CS:SYS;隐藏光标 MOV AH,01H MOV CH,7 MOV CL,0 INT 10H MOV CX,OFFSET ENDSHOW-OFFSET SYS_START SYS_START:JMP SHOW_MENU DATE DB &00/00/00 00:00:00&,0 ;日期字符串 DATE_INPUT DB &00/00/00 00:00:00&,0 ;用户输入的日期字符串,当输入不正确或者退出输入时,;可以避免改变原始日期 DATE_POS DB 0,2,4,7,8,9 ;定位 CMOS RAM 中日期各项的地址 DATE_CHAR_POS DB 15,12,9,6,3,0 ;定位日期字符串中各项的位置 DATE_COLOR DB 2 ;提示字符串 PRESS_ESC DB &PRESS ESC TO RETURN MENU&,0 PRESS_F1 DB &PRESS F1 TO CHANGE COLOR&,0 INPUT_DATEDB &INPUT A DATE IN THE FORM OF YY/MM/DD HH:MM:SS,PRESS ENTER TO END INPUT&,0 OPTION1 DB &1) RESET PC&,0 OPTION2 DB &2) START SYSTEM&,0 OPTION3 DB &3) CLOCK&,0 OPTION4 DB &4) SET CLOCK&,0 ;直接定址表 TABLE DW SUB1,SUB2,SUB3,SUB4;列出功能选项 SHOW_MENU: CALL CLS PUSH CS POP DS MOV SI,OFFSET OPTION1
MOV DX,0 MOV CL,2 CALL SHOW_STR INC DH MOV SI,OFFSET OPTION2 CALL SHOW_STR INC DH MOV SI,OFFSET OPTION3 CALL SHOW_STR INC DH MOV SI,OFFSET OPTION4 CALL SHOW_STR GET_INPUT:MOV AH,0 ;获取键盘输入 INT 16H SUB AL,30H CMP AL,1 JBGET_INPUT CMP AL,4 JAGET_INPUT MOV BL,AL DEC BL ;1~4转化为0~3 MOV BH,0 SHL BX,1 CALL WORD PTR CS:TABLE[BX] ;进入子程序 JMP SHOW_MENU ;重新启动计算机SUB1:MOV AX,0FFFFHPUSH AXMOV AX,0HPUSH AXRETF;引导硬盘现有的操作系统SUB2:CALL CLS MOV AX,0 MOV ES,AX MOV BX,7C00H PUSH AX PUSH BX MOV DL,80H MOV DH,0 MOV CH,0 MOV CL,1 MOV AL,1 MOV AH,2 INT 13H ;读入硬盘0面0道1扇区的内容到0:7C00HRETF ;CS:IP指向0:7C00H;循环显示时间 SUB3:;清屏,显示提示字符串,设置读取日期的循环次数及各项的起始地址CALL CLS PRE_SHOW_DATE: ;输出提示信息
MOV SI,OFFSET PRESS_ESC MOV DX,0 MOV CL,DATE_COLOR CALL SHOW_STR MOV SI,OFFSET PRESS_F1 MOV DX,0100H CALL SHOW_STR MOV CX,6 ;循环次数=6 MOV DI,OFFSET DATE_POS ;DI用来定位需要读取的CMOS ROM的单元 MOV BX,OFFSET DATE_CHAR_POSBX用来定位日期各项的位置;读取字符串 READ_DATE:PUSH CX ;保存循环次数 ;读取日期的一项,放置到日期字符串相应的位置 MOV AL,[DI] ;CMOS ROM 日期的某单元 OUT 70H,AL ;向端口70H写入要访问的单元的地址 IN AL,71H ;从端口71H获得要写入AL的数据CALL BCD2ASCII;BCD码转化为数字的ASCII码,(AH)=十位的ASCII码,(AL)=个位的ASCII码 PUSH AX ;压入(AX),因为后面还要传送到DATE,而紧接着改变了(AX) MOV AL,[BX] ;(AL)=日期某项的位置 MOV AH,0(AH)置零 MOV SI,AXSI指向日期字符串某项的位置 POP AX ;恢复(AX) MOV BYTE PTR DATE[SI],AH ;传送 MOV BYTE PTR DATE[SI+1],AL INC DI ;DI+1,定位到下一个单元INC BX ;BX+1,定位到DATE字符串下一个位置 POP CX ;恢复循环次数 LOOP READ_DATE ;继续传送日期的下一项到DATE ;显示日期字符串,DS:SI指向字符串首地址 MOV DX,0300H
MOV CL,DATE_COLOR
MOV SI,OFFSET DATE
CALL SHOW_STR
SUB3_INPUT:MOV AH,1 ;获取键盘输入,非阻塞
INT 16H CMP AL,1BH ;ESC JE SUB3_RET CMP AH,3BH ;F1 JECHG_COLOR CALL DELAY JMP PRE_SHOW_DATE CHG_COLOR: INC DATE_COLOR MOV AH,0;16H中断的1号功能不会清除键盘缓冲区,下次读取还会读出INT 16H;调用0号功能清除一次CALL DELAY JMP PRE_SHOW_DATE SUB3_RET:MOV AH,0;16H中断的1号功能不会清除键盘缓冲区,下次读取还会读出INT 16H;调用0号功能清除一次MOV CL,2 MOV DATE_COLOR,CL RET ;修改当前日期、时间 SUB4:CALL CLS ;输出提示信息 MOV SI,OFFSET PRESS_ESC MOV DX,0 MOV CL,2 CALL SHOW_STR MOV SI,OFFSET INPUT_DATE MOV DX,0100H CALL SHOW_STR ;设置字符栈的位置,获取日期输入前的准备 MOV SI,OFFSET DATE_INPUT
MOV DX,0300H显示的位置 GET_DATE:MOV AH,0INT 16H CMP AL,20H ;空格 JE PUSH_CHARCMP AL,3AH ;冒号 JE PUSH_CHAR CMP AL,2FH JB NO_DATEASCII码小于2FH,说明不是数字或斜杠'/'
CMP AL,39H JA NO_DATE;ASCII码大于39H,说明不是数字或斜杠'/'PUSH_CHAR:MOV AH,0 CALL CHARSTACK ;字符入栈 MOV AH,2 CALL CHARSTACK ;字符串显示 JMP GET_DATE NO_DATE:CMP AH,0EH ;退格 JE BACKSPACE CMP AH,1CH ;ENTER JE PRESS_ENTER CMP AL,1BH ;ESC JE ESC_SUB4
JMP GET_DATE BACKSPACE:MOV AH,1 CALL CHARSTACK ;字符出栈 MOV AH,2 CALL CHARSTACK ;字符串显示 JMP GET_DATE ESC_SUB4: ;退出SUB4,DATE字符串的内容未被改变 MOV AH,0 CALL CHARSTACK JMP SUB4_RET PRESS_ENTER:MOV AL,0 MOV AH,0 CALL CHARSTACK ;0入栈 MOV AH,2 CALL CHARSTACK ;字符串显示 ;完成输入,复制 DATE_INPUT 的内容到 DATE MOV SI,OFFSET DATE_INPUT PUSH CS POP ES MOV DI,OFFSET DATE MOV CX,18 REP MOVSB MOV CX,6 ;循环次数=6 MOV DI,OFFSET DATE_POS ;DI用来定位需要读取的CMOS ROM的单元 MOV BX,OFFSET DATE_CHAR_POSBX用来定位日期各项的位置SET_DATE:PUSH CX ;保存循环次数 ;读取日期的一项,放置到日期字符串相应的位置 MOV AL,[DI] ;CMOS ROM 日期的某单元 OUT 70H,AL ;向端口70H写入要访问的单元的地址 MOV AL,[BX] MOV AH,0 MOV SI,AX MOV AH,DATE[SI] ;传送日期项的内容 MOV AL,DATE[SI+1] CALL ASCII2BCD ;两位数字的ASCII码转化为BCD码(AH的高4位=十位,AH的低4位=个位)OUT 71H,AL将日期项的BCD码写入到CMOS ROM INC DI ;DI+1,定位到下一个单元INC BX ;BX+1,定位到DATE字符串下一个位置 POP CX ;恢复循环次数 LOOP SET_DATE ;继续传送日期的下一项到DATE SUB4_RET:RET
--------------------------------------------------------------------------------------------;功能:在指定的位置,用指定的颜色,显示一个用0结尾的字符串。;参数:(DH)=行号(0~24),(DL)=列号(0~79),(CL)=颜色,DS:SI指向字符串的首地址。;返回:无SHOW_STR:PUSH AX;保护现场PUSH ESPUSH DXPUSH DIPUSH SIMOV AX,0B800H;显示缓冲区段地址MOV ES,AX;(ES)=显示缓冲区段地址MOV AL,0A0H;以下计算初始字符的偏移地址MUL DH;行数×0A0H(160个字节)MOV DI,AX;转移到DI中MOV AL,2;显示缓冲区中一个字符占两个字节空间MUL DL;2×列号ADD DI,AX;获得初始字符的偏移地址S:MOV AX,DS:[SI];输出字符到显示缓冲区MOV ES:[DI],AXINC DI;准备写入颜色信息MOV ES:[DI],CL;写入颜色信息INC SI;准备输出下一个字符PUSH CX;保存颜色=(CL)MOV CX,DS:[SI];(CX)=下一个字符MOV CH,0 ;!!!若DS:[SI]的低位字节为零,但其高位字节不为零,;!!!则程序不能如期望的那样跳转到END_SHOWJCXZ END_SHOW;不为零则继续输出,为零则结束子程序POP CX;恢复颜色=(CL)INC DI;准备写入下一个字符JMP S;输出下一个字符END_SHOW:POP CX;!!!如果(CX)≠0,就会跳转到这里,此时(CX)在栈中还没有弹出;!!!如果不弹出就会引发错误POP SI;恢复现场POP DIPOP DXPOP ESPOP AXRET;--------------------------------------------------------------------------------------------;--------------------------------------------------------------------------------------------;功能:清屏 ;参数:无;返回:无CLS:PUSH AX PUSH CX PUSH DI PUSH ES MOV AX,0B800H MOV ES,AX MOV DI,0 MOV CX,2000CLS_S:MOV BYTE
PTR ES:[DI],0 ;为什么把BYTE改成WORD会引发崩溃?INC DI INC DI LOOP CLS_S ;恢复颜色 MOV DI,1MOV CX,2000 RESET_COLOR: MOV BYTE PTR ES:[DI],7 INC DI INC DI LOOP RESET_COLOR POP ES POP DI POP CX POP AX RET;--------------------------------------------------------------------------------------------;--------------------------------------------------------------------------------------------;功能:把一个byte、两位数的BCD码转变成2个byte的ASCII码;参数:(AL)=十进制两位数的BCD码(十位=高4位的BCD码,个位=低4位的BCD码) ;返回:(AH)=十位的ASCII码,(AL)=个位的ASCII码
BCD2ASCII: PUSH CX ;保存用到的寄存器 MOV AH,AL;AL中的BCD码复制一份到AH中MOV CL,4 ;右移4位,取得月份十位的值SHR AH,CL ;(AH)=月份十位的值 AND AL,B;(AL)=月份个位的值 ADD AH,30H ;(AH)=月份十位的ASCII码 ADD AL,30H ;(AL)=月份个位的ASCII码 POP CX ;恢复用到的寄存器 RET ;返回 ;--------------------------------------------------------------------------------------------;--------------------------------------------------------------------------------------------;功能:把2个byte的ASCII码转变成一个byte、两位数的BCD码;参数:(AH)=十位的ASCII码,(AL)=个位的ASCII码 ;返回:(AL)=十进制两位数的BCD码(十位=高4位的BCD码,个位=低4位的BCD码)
ASCII2BCD: PUSH CX ;保存用到的寄存器 SUB AH,30H ;(AH的低4位)=月份十位的BCD码 SUB AL,30H ;(AL的低4位)=月份个位的BCD码 MOV CL,4 ;左移4位 SHL AH,CL ;(AH的高4位)=月份十位的BCD码 OR AH,B ;(AH低4位)置1 OR AL,B ;(AL高4位)置1 AND AL,AH ;(AL)=十进制两位数的BCD码 POP CX ;恢复用到的寄存器 RET ;返回 ;--------------------------------------------------------------------------------------------;--------------------------------------------------------------------------------------------;功能:产生延时 ;参数:无 ;返回:无DELAY:PUSH AX PUSH DX MOV DX,1000 MOV AX,0
SUB AX,1 SBB DX,0
CMP AX,0 JNE DELAY_S CMP DX,0 JNE DELAY_S POP DX POP AX RET ;返回 ;--------------------------------------------------------------------------------------------;字符栈;--------------------------------------------------------------------------------------------;功能:0号:字符入栈 1号:字符出栈 2号:显示栈中的字符 ;参数:(AH)=功能选择,(AL)=入栈的字符,DS:SI指向字符栈空间;(DH)=显示的行位置,(DL)=显示的列位置 ;返回:(AL)=出栈的字符 CHARSTACK: JMP CHARSTARTCHAR_TABLEDW CHARPUSH,CHARPOP,CHARSHOW TOPDW0 CHARSTART:PUSH BX CMP AH,2 JA SRET ;没有对应的功能号,结束子程序 ;调用相应的子功能
MOV BL,AH MOV BH,0 SHL BX,1 CALL WORD PTR CHAR_TABLE[BX] ;限制输入的长度,如果超过了日期字符串的长度,将TOP置为0 CMP TOP,18 JNE SRET MOV TOP,0 SRET:POP BX RET;字符入栈,(AL)=入栈的字符
CHARPUSH:CMP AL,1BH ;如果是ESC JE ESC_INPUT ;跳转到ESC_INPUTPUSH BX MOV BX,TOPMOV [BX][SI],AL ;字符入栈 MOV BYTE PTR 1[BX][SI],0 INC TOP ;TOP指向新的栈顶 POP BX JMP CHARPUSH_RET ESC_INPUT:MOV TOP,0 ;TOP置为0 CHARPUSH_RET:RET ;字符出栈,(AL)=出栈的字符 CHARPOP:PUSH BX CMP TOP,0 ;是否已到栈底 JE CHARPOPRET ;是则不出栈,结束子功能
DEC TOP ;TOP指向要出栈的字符 MOV BX,TOP MOV AL,[BX][SI] ;字符出栈 MOV BYTE PTR [BX][SI],' ' CHARPOPRET:POP BX RET ;DS:SI指向字符栈空间,(DH)=显示的行位置,(DL)=显示的列位置CHARSHOW:PUSH AX PUSH BX PUSH DX PUSH DI PUSH ES ;使ES:SI指向显示的位置,DS:SI指向字符栈空间 MOV BX,0B800H MOV ES,BX MOV AL,160 MUL DH MOV DI,AX MOV AL,DL SHL AL,1 MOV AH,0 ADD DI,AX
MOV BX,0 CHARSHOWS:CMP TOP,0 JE SET_CURSOR ;处理删除最后一个字符的事件 CMP BX,TOP JE ENDSHOW MOV AL,[BX][SI] MOV ES:[DI],AL MOV ES:[DI+2],BYTE PTR ' ' INC BX INC DI INC DI JMP CHARSHOWS SET_CURSOR:MOV BYTE PTR ES:[DI],' 'ENDSHOW:POP ES POP DI POP DX POP BX POP AX RET;--------------------------------------------------------------------------------------------SYS ENDS;============================================================================================;安装过程的第一行指令END START
大神。。。你都学完了!我才第十章
1. 避免闪烁,可以关闭光标MOV CX,3030HMOV AH,1INT 10H2CLS清屏子程序,可以用2句代码取代MOV AX,3INT 10H
请问是什么运行环境?
请问编译出.exe之后该如何运行?我在debug中直接g到mov ax,4c00h,可是没有反应
直接命令行输入xx.exe也没用
移动光标显示,所以来回闪烁
登录百度帐号推荐应用汇编语言_课程设计1_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
汇编语言_课程设计1
&&《汇编语言》(第3版)王爽 著 课程设计1
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩4页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢&>&&>&开发技术&>&C&>&王爽《汇编语言》第二版课程设计2,我的答案
王爽《汇编语言》第二版课程设计2,我的答案
上传大小:10KB
阅读下面的材料 :
开机后, 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 ) 重新启动计算机
2 ) S 引导现有的操作系统
3 ) C 进入时钟程序
4 ) S 设置时间
( 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 扇区中的程序就必须负责将其他扇区中的内容读入内存。
这个程序较为复杂,它用到了我们所学到的所有技术,需要进行仔细地分析和耐心地调试。这个程序对于我们的整个学习过程是具有总结性的,希望读者能够尽力完成。...展开收缩
综合评分:4.2(21位用户评分)
所需积分:
下载个数:87
审核通过送C币
c自学入门到进阶
创建者:weixin_
Setup Factory合集(6.0~9.5)
创建者:caozhy
各种语言源代码打包合集
创建者:caozhy
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var q = $("#form1").serializeArray();
console.log(q);
var res_area_r = $.trim($(".res_area_r").val());
if (res_area_r == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
var mess = $(".res_area_r").val();
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, _username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click",'.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
$(".res_area_r").val($.trim($(".res_area").val()));
评论共有3条
嗯 很好用 已经用虚拟机实现
没弄成功,学习努力中。。
上传者其他资源上传者专辑
Intel 80386程序员参考手册
8086中断手册(汇编学习必备)
Dos Debug 手册(学习汇编语言必备)
vi使用案上图解(初学者必备)
GDB不完全手册(转)
开发技术热门标签
VIP会员动态
前端开发重难点
17年软考最新真题及解析
物联网全栈开发专题
二十大技术领域优质资源
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
CSDN&vip年卡&4000万程序员的必选
王爽《汇编语言》第二版课程设计2,我的答案
会员到期时间:剩余下载个数:
请勿使用迅雷下载
积分不足!
资源所需积分
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分
当前拥有积分
VIP年卡全年1200个资源免积分下载
请勿使用迅雷下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:

我要回帖

更多关于 汇编语言 王爽 pdf 的文章

 

随机推荐