当前位置:首页 » 课程大全 » 汇编课程设计2写入光盘

汇编课程设计2写入光盘

发布时间: 2021-03-02 14:21:20

Ⅰ 汇编语言课程设计

堆方块的那个游戏么?

Ⅱ 汇编语言课程设计求解

.modelsmall
.data
stuinfodb'XiaomingLi,Num.00001',0dh,0ah,'$'
msg0db'InputN(2<N<50):$'
msg1db0dh,0ah,'Inputisinvalid,reinput:$'
crlfdb0dh,0ah,'$'
Ndb0

.code
.startup
leadx,stuinfo
movah,9
int21h

leadx,msg0
int21h
movbl,10
r0:
movbh,0
r1:;readN
movah,1
int21h
cmpal,0dh
jzr2

cmpal,'0'
jbe0
cmpal,'9'
jae0

andal,0Fh
xchgal,N
mulbl
addN,al

incbh
cmpbh,2
jzr2
jmpr1

r2:
moval,N
cmpal,3
jbe0
cmpal,50
jaee0

;print
movah,9
leadx,crlf
int21h

movbx,0
movax,2
c0:
addbx,ax
callprint
addax,2
cmpal,N
jac1
callprintplus
jmpc0
c1:
movax,0e3dh;'=':3dh
int10h

movax,bx
callprint

jmpexit

e0:
movah,9
leadx,msg1
int21h
movN,0
jmpr0

exit:
.exit0

printplusprocnear
pushax
movax,0e2bh;'+':2bh
int10h
popax
ret
printplusendp

printprocnear
pushax
pushbx
movbx,10
xorcx,cx
q0:
xordx,dx
divbx
xordx,0e30h
pushdx
inccx
cmpax,0
jnzq0

q1:
popax
int10h
loopq1

popbx
popax
ret
printendp

END

Ⅲ 王爽汇编课程设计2有不懂的地方。

mov bx,512
mov ax,offset boot_end-offset boot
mov dx,0
div bx
cmp ax,0 ;这里如果ax=0,是不是offset boot_end-offset boot还没有512B呢?对头,
je load_ok ;cmp ax,0后的load_ok是做什么的? 标号,做跳转的目标地址,load_ok表示本程序加载完成,可以继续,功能是将把控制转移到0:offset b_start-offset boot+7c00h
cmp dx,0 ;这里如果dx=0,是不是(ax,offset boot_end-offset boot )还没有超过512B,没余?否,如果没有超过512B,就已经在前面跳走了!是无余,就是整除了,正好占整数个扇区
je r_floppy ;cmp dx,0后的r_floppy是做什么的? 标号,做跳转的目标地址,r_floppy就是read floppy负责将BIOS没有加载完的部分加载完
inc ax

Ⅳ 汇编课程设计,用汇编编写,求大神帮忙


;这题给5分,还不如不给呢
;这里我对stein算法的实现,应该可以再优化一下.暂时这样了.

;完了,答错了,看成求最大公约数了,我改一下--改完了.

;所有公约数:
dsegsegment
m0db'Inputfirstnumber:$'
m1db'Inputsecondnumber:$'
rdb0dh,0ah,'$'

res1db0dh,0ah,'Thegreatestcommondivisorof$'
res2db'and$'
res3db'is$'
xdb0
ydb0
dsegends

assumecs:cseg,ds:dseg
csegsegment
start:
movax,dseg
movds,ax

movah,9
leadx,m0
int21h
leasi,x
callreadint

movah,9
leadx,r
int21h

movah,9
leadx,m1
int21h
leasi,y
callreadint

movah,9
leadx,r
int21h

movbl,2
movch,0
movcl,x
cmpcl,y

ja$0
movcl,y
$0:
moval,x
movah,0
divbl
cmpah,0;
jnz$1

moval,y
divbl
cmpah,0
jnz$1

moval,bl
callprint10
moval,20h
int10h
$1:
incbl
loop$0


movax,4c00h
int21h

print10procnear
pushbx
pushcx

movbx,10
movcx,0
p0:
xordx,dx
divbx
xordx,0e30h
pushdx
inccx
cmpax,0
jnzp0
p1:
popax
int10h
loopp1
popcx
popbx
ret
print10endp


;读取10进制输入数据(<100),saveto[si]
readintprocnear
movbx,10

r0:
movah,7;不回显方式读取一个字符
int21h
cmpal,0dh
jzr1;回车键结束输入

cmpal,'0';输入不是数字的字符,重新输入
jbr0
cmpal,'9'
jar0
movah,0eh;输入合法,将字符输出到屏幕上
int10h

andal,0fh
xchgal,[si]
mulbl
addal,[si]
mov[si],al;保存到[si]
cmpal,10;al>0说明是2位数了,再输出一个数就会>100,
;所以此时可以结束输入了
jbr0;输入下一个数字
r1:
ret
readintendp

csegends

endstart;最大公约数.
dsegsegment
m0db'Inputfirstnumber:$'
m1db'Inputsecondnumber:$'
rdb0dh,0ah,'$'
res1db0dh,0ah,'Thegreatestcommondivisorof$'
res2db'and$'
res3db'is$'
xdb0
ydb0
dsegends

assumecs:cseg,ds:dseg
csegsegment
start:
movax,dseg
movds,ax

movah,9
leadx,m0
int21h
leasi,x
callreadint

movah,9
leadx,r
int21h

movah,9
leadx,m1
int21h
leasi,y
callreadint

movah,9
leadx,res1
int21h

movah,0
moval,x
callprint10

movah,9
leadx,res2
int21h

movah,0
moval,y
callprint10

movah,9
leadx,res3
int21h

moval,x
movbl,y
callstein

movah,0
callprint10

movax,4c00h
int21h

print10procnear
movbx,10
movcx,0
p0:
xordx,dx
divbx
xordx,0e30h
pushdx
inccx
cmpax,0
jnzp0
p1:
popax
int10h
loopp1
ret
print10endp

;Stein算法求最大公约数,具体算法自行查资料
;参数:al,bl
;返回值在al中
steinprocnear
movcl,1
s0:
cmpal,0
jzs1
cmpbl,0
jzs2

testal,1;偶数?
jnzs3
testbl,1;偶数?
jnzs4
shral,1
shrbl,1
shlcl,1
jmps0
s4:
shral,1
jmps0
s3:
testbl,1
jnzs5
shrbl,1
jmps0
s5:
cmpal,bl
jas6
movch,al
jmps7
s6:
movch,bl
s7:
cmpal,bl
jas8
subal,bl
negal
movbl,ch
jmps0
s8:
subal,bl
movbl,ch
jmps0
s1:
moval,bl
mulcl
jmps9
s2:
mulcl
s9:
ret
steinendp


;读取10进制输入数据(<100),saveto[si]
readintprocnear
movbx,10

r0:
movah,7;不回显方式读取一个字符
int21h
cmpal,0dh
jzr1;回车键结束输入

cmpal,'0';输入不是数字的字符,重新输入
jbr0
cmpal,'9'
jar0
movah,0eh;输入合法,将字符输出到屏幕上
int10h

andal,0fh
xchgal,[si]
mulbl
addal,[si]
mov[si],al;保存到[si]
cmpal,10;al>0说明是2位数了,再输出一个数就会>100,
;所以此时可以结束输入了
jbr0;输入下一个数字
r1:
ret
readintendp
csegends
endstart

Ⅳ 王爽汇编语言课程设计2实验环境具体怎么弄,还有程序设计好后是直接在DOS下运行还是在软盘下

其实很简单:下载一个masm6.15的压缩文件(直接在网络主页里搜“masm6.15下载”),大概4.32M,下载后,解压缩到D:盘,将文件夹的名字改为masm,这是因为解压后的名字默认为masm 615,中间有个空格不太好(因为再DOS下对于有空格的文件夹的名字要用双引号括起来,比较麻烦)。
1、用记事本或其他文本编辑器(例如Editplus)写好汇编程序,保存为.asm格式的文件(直接将后缀名修改为.asm),例如文件名为test.asm,放到D:盘。
2、在windows下点击“开始”,再点击“运行”,在编辑框中输入cmd,切换到DOS界面下。进入D:盘——d:,再回车。
3、在当前目录(D:盘下)用cd命令,切换到刚才解压到D:盘的masm目录下的BIN目录下——
cd masm\bin
4、 然后生产目标文件,使用命令——masm D:\test.asm(后缀名可以省略,默认为.asm),生成.obj的目标文件,该目标文件在D:\masm\BIN目录下。将生成的.obj文件拷贝到D:盘根目录下(其实不用拷贝也行,只要下面能找到该.obj文件就行,个人建议将.obj文件和.asm文件放到一起比较清楚)。
5、再使用命令将.obj目标文件链接成.exe文件(还在D:\masm\BIN目录下使用命令)——
link D:\test.obj(后缀名可以省略,默认为.obj),出现选项让你选,第一个选项是让你输入生成的.exe文件的名字,例如输入——D:\test.exe(后缀名可以省略,默认为.exe),其他选项暂时可以不考虑(其实看他们的名字就能看懂)。这样就在D:盘下生成了一个test.exe的可执行文件。
6、双击该文件,发现屏幕闪了一下就没了,说明程序是运行了。要想看到程序每一步的执行情况,那么生成的test.exe文件要在Debug模式下运行。在DOS界面下(任何目录)输入命令——debug D:\test.exe(此时后缀名.exe必须要有),回车后就开始运行该可执行文件了。按照王爽那本书上从第91页开始的程序执行过程的跟踪使用的一些命令,例如:r命令、u命令、d命令、g命令、p命令等的使用,就能查看和控制程序的运行了。

Ⅵ 汇编语言课程设计题目

命令行参数编程:

还需要什么提示呢

Ⅶ 汇编 王爽 课程设计2 设置时间时就是写不进去 是不是虚拟机设置问题

不是,那部分内存是只读的,出厂设定的,所以无法更改

Ⅷ 写一个汇编的程序。课程设计用的

这个用汇编语言实现有点麻烦,如果用Verilog实现,我可以给你源代码。

Ⅸ 为什么《汇编语言》(王爽)课程设计2要求编写的程序必须安装在软盘

那个课程设计没做,必须要实模式才行,涉及到真实硬件,虚拟8086貌似不行,所以干脆没做。但是安装在软盘的原因是因为软盘的结构比现在的硬盘简单多了,这就跟现在的cpu跟以前的8086一样,现在的cpu肯定要复杂的多,所以我们学习的话还是用简单的东西来学,譬如8086cpu和软盘都是以前的东西,相对简单

Ⅹ 汇编课程设计

; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
CR equ 000DH
LF equ 000AH
KBBack equ 0008H
; -----------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)

; 用法: Output Str_Addr
; 用法举例:Output PromptStr

Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -----------------------------------------
; 功能:输出回车换行
Output_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
Output_CTLF endp
; -----------------------------------------
; 功能:输出一个字符
; 入口:dl=要显示的字符
Output_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Output_Chr endp
; -----------------------------------------
; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
; 入口:AX=二进制数
; 出口:在当前光标位置显示转换后的ASCII码数字
Dec_ASCII Proc Near
push dx
push bx
push di
mov bx,10
lea di,@@Temp_Save[6]
mov byte ptr [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop bx
pop dx
ret
@@Temp_Save db 7 p(?)
Dec_ASCII EndP
; -----------------------------------------
; 功能:将AL中的低4位二进制数转换成十六进制显示的ASCII码
; 入口:AL
; 出口:AL=转换后的ASCII码
AL_ASCII Proc Near
cmp al,10 ;AL<10?
jb @@To_ASCII ;AL<10,按数字处理
add al,7 ;AL>=10,按大写字母处理
@@To_ASCII: add al,'0' ;转换成相应的数字或大写字母
ret
AL_ASCII EndP
; -----------------------------------------
; 功能:将AL中的字节数据转换成十六进制显示的ASCII码
; 入口:AL
; 出口:AX=转换后的ASCII码
Byte_ASCII Proc Near
push cx
mov cx,4
xor ah,ah ;将AH置0
shl ax,cl ;将AX左移4位
shr al,cl ;将AL右移4位
xchg ah,al
call AL_ASCII ;调用子程序,将AL中的值转换成相应的ASCII码
xchg ah,al
call AL_ASCII
xchg ah,al
pop cx
ret
Byte_ASCII EndP
; -----------------------------------------
; 功能:将AL中的字节数据转换成十六进制显示的ASCII码,并在当前光标位置显示
; 入口:AL
; 出口:AX=转换后的ASCII码
ByteD_ASCII Proc Near
push dx
push ax
call Byte_ASCII ;将AL中的字节数转换成十六进制显示的ASCII码
mov dl,al
call Output_Chr ;显示一个字符
mov dl,ah
call Output_Chr ;显示一个字符
mov dl,'H'
call Output_Chr ;显示一个字符
pop ax
pop dx
ret
ByteD_ASCII EndP
; -----------------------------------------
Clear_Crt proc Near ;清屏
mov ax,700h
mov bh,Attribute ;取字符属性
xor cx,cx ;左上角坐标
mov dh,24 ;右下角行号
mov dl,79 ;右下角列号
int 10h
ret
Clear_Crt Endp
; -----------------------------------------
; 显示乘法口诀表
Multiply Proc Near
mov al,1 ;外循环初值
Multiply_1: mov ah,1 ;内循环初值
Multiply_2: push ax
mov dl,ah
or dl,30h ;转换成可显示的ASCII码
call Output_Chr ;显示被乘数
mov dl,'X'
call Output_Chr ;显示乘号
mov dl,al
or dl,30h ;转换成可显示的ASCII码
call Output_Chr ;显示乘数
mov dl,'='
call Output_Chr ;显示等号
mul ah ;乘法
call Dec_ASCII ;显示乘积
mov dl,20h
call Output_Chr ;显示一个空格
pop ax
inc ah ;被乘数增1
cmp ah,al
jbe Multiply_2 ;下一个乘法
call Output_CTLF ;输出一个回车、换行
inc al ;乘数增1
cmp al,10
jb Multiply_1
ret
Multiply EndP
; -----------------------------------------
; 显示ASCII码表(从20H--FFH)
ASCII_Code Proc Near
call Clear_Crt ;清屏
xor dx,dx
inc dh
xor bx,bx
mov ah,2
int 10h
mov dl,20h
Disp_Line: mov cx,11 ;每行显示11个ASCII码字符
List_ASCII: push dx
mov al,dl
call ByteD_ASCII ;将AL中的字节数据转换成十六进制显示的ASCII码,并在当前光标位置显示
mov dl,20h
call Output_Chr ;显示一个空格
pop dx
call Output_Chr ;显示ASCII码字符
push dx
mov dl,20h
call Output_Chr ;显示一个空格
mov dl,20h
call Output_Chr ;显示一个空格
pop dx
inc dl ;下一个ASCII码字符
test dl,0ffh
jz $+9
loop List_ASCII
call Output_CTLF ;输出一个回车、换行
jmp Disp_Line
call Output_CTLF ;输出一个回车、换行
ret
ASCII_Code EndP
; -----------------------------------------
Attribute db ? ;字符属性
prompt_Str db 'Press any key to continue...$'
Select db 'M. 9-9 Multiply table',13,10
db 'A. ASCII code',13,10
db 'Q. Quit',13,10,13,10
db 'Please select: $'
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
mov ah,8
xor bh,bh
int 10h
mov Attribute,ah ;保存字符属性
Select_Item:xor dx,dx
xor bx,bx
mov ah,2
int 10h
Output Select ;提示输入选择项目
mov ah,1
int 21h
call Output_CTLF ;输出一个回车、换行
call Output_CTLF ;输出一个回车、换行
and al,0dfh
cmp al,'Q'
jz Exit_Proc ;结束程序,返回操作系统
cmp al,'M'
jnz $+7
call Multiply; 显示乘法口诀表
jmp Scroll_Down
cmp al,'A'
jnz Select_Item
call ASCII_Code; 显示ASCII码表(从20H--FFH)
Scroll_Down:call Output_CTLF ;输出一个回车、换行
Output prompt_Str
mov ah,1
int 21h
call Clear_Crt ;清屏
jmp Select_Item
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919