


- [qqcrack] 可以精简一下: code segmemt assume cs:code db '9,8,7,4 07/25 16:15
- [1539318973] s2就是复制s1稍微改下 07/25 12:42
[2011-07-28 09:24] 实验15
assume cs:code
stack segment
db 128 dup(0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128
push cs
pop ds
mov si,offset a
mov ax,0
mov es,ax
mov di,204H
cld
mov cx,offset aend -offset a
rep movsb
mov ax,0
mov es,ax
push es:[4*9]
pop...
stack segment
db 128 dup(0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128
push cs
pop ds
mov si,offset a
mov ax,0
mov es,ax
mov di,204H
cld
mov cx,offset aend -offset a
rep movsb
mov ax,0
mov es,ax
push es:[4*9]
pop...
阅读全文 |
评论次数(0) |
浏览次数(285) |
所属类型(默认类型)
[2011-07-25 12:40] 实验14
assume cs:code
code segment
start:
mov ax,0b800H
mov ds,ax
mov si,12*160+31*2
mov byte ptr [si+2*2],'/'
mov byte ptr [si+2*5],'/'
mov byte ptr [si+2*11],':'
mov byte ptr [si+2*14],':'
mov al,9
mov cx,3
s1:
push ax
push cx
out 70H,al
in al,71H
mov ah,al
mov cl,4...
code segment
start:
mov ax,0b800H
mov ds,ax
mov si,12*160+31*2
mov byte ptr [si+2*2],'/'
mov byte ptr [si+2*5],'/'
mov byte ptr [si+2*11],':'
mov byte ptr [si+2*14],':'
mov al,9
mov cx,3
s1:
push ax
push cx
out 70H,al
in al,71H
mov ah,al
mov cl,4...
阅读全文 |
评论次数(2) |
浏览次数(281) |
所属类型(默认类型)
[2011-07-24 19:25] 实验12
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200H
mov word ptr es:[0],200H
mov word ptr es:[2],0
mov cx,offset do0end-offset do0
rep movsb
mov ax,4c00H
int 21H
do0:
jmp short do0start
db 'divide error!' ...
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200H
mov word ptr es:[0],200H
mov word ptr es:[2],0
mov cx,offset do0end-offset do0
rep movsb
mov ax,4c00H
int 21H
do0:
jmp short do0start
db 'divide error!' ...
阅读全文 |
评论次数(0) |
浏览次数(289) |
所属类型(默认类型)
[2011-07-24 12:02] 实验11
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db 'Beginner''s All-purpose Symbolic Instruction Code.',0
datasg ends
stacksg segment
db 16 dup(0)
stacksg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov dh,12
mov dl,15
mov cl,0111...
datasg segment
db 'Beginner''s All-purpose Symbolic Instruction Code.',0
datasg ends
stacksg segment
db 16 dup(0)
stacksg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov dh,12
mov dl,15
mov cl,0111...
阅读全文 |
评论次数(0) |
浏览次数(258) |
所属类型(默认类型)
[2011-07-24 03:42] 子程序的编程
汇编中call/ret(retf)实现了子程序的调用,因此,可以自己编写不同的子程序以供调用,体现了结构化程序设计的思想,使得代码的维护更加方便.以下是个人编写子程序的经验(尽管笔者仅编写了几个子程序):
1.对于子程序,要有详尽的描述,如功能,参数,返回,栈的使用
2.内部屏蔽,有些寄存器需要在子程序结束时恢复原值,这可以通过栈来实现.
子程序编写步骤:
1.确定功能,并加到注释中
2.确定参数,返回,并加到注释中
3.编写代码
4.确定要屏蔽的寄存器,在子程序开始和结束处入栈和出栈,注意出入顺序相反
5.编写程序(尽量简单,以避免可能的错误是由调用者产生的)并调用该子程序,...
1.对于子程序,要有详尽的描述,如功能,参数,返回,栈的使用
2.内部屏蔽,有些寄存器需要在子程序结束时恢复原值,这可以通过栈来实现.
子程序编写步骤:
1.确定功能,并加到注释中
2.确定参数,返回,并加到注释中
3.编写代码
4.确定要屏蔽的寄存器,在子程序开始和结束处入栈和出栈,注意出入顺序相反
5.编写程序(尽量简单,以避免可能的错误是由调用者产生的)并调用该子程序,...
阅读全文 |
评论次数(0) |
浏览次数(347) |
所属类型(默认类型)
[2011-07-23 08:53] 课程设计1-终结篇
下面是全部源代码(注意:数据段那三堆数据是一行的)
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db '1975',0,'1976',0,'1977',0,'1978',0,'1979',0,'1980',0,'1981',0,'1982',0,'1983',0,'1984',0,'1985',0,'1986',0,'1987',0,'1988',0,'1989',0,'1990',0,'1991',0,'1992',0,'1993',0,'1994',0,'1995',0
;下面第一个偏移地址是105
dd 1...
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db '1975',0,'1976',0,'1977',0,'1978',0,'1979',0,'1980',0,'1981',0,'1982',0,'1983',0,'1984',0,'1985',0,'1986',0,'1987',0,'1988',0,'1989',0,'1990',0,'1991',0,'1992',0,'1993',0,'1994',0,'1995',0
;下面第一个偏移地址是105
dd 1...
阅读全文 |
评论次数(0) |
浏览次数(244) |
所属类型(默认类型)
[2011-07-23 05:55] 课程设计1-预备篇
课程设计1需要一个可以转换超过65535的数到十进制字符的子程序,结合前面的经验,编写如下程序(其中有个复合子程序是所需要的):
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db 16 dup(0)
datasg ends
stacksg segment
dd 12 dup(0)
stacksg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov si,0
mov ax,stacksg
mov ss,ax
mov...
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db 16 dup(0)
datasg ends
stacksg segment
dd 12 dup(0)
stacksg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov si,0
mov ax,stacksg
mov ss,ax
mov...
阅读全文 |
评论次数(0) |
浏览次数(272) |
所属类型(默认类型)
[2011-07-23 04:36] 实验10.3
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db 10 dup(0)
datasg ends
stacksg segment
dd 2 dup(0)
stacksg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov si,0
mov ax,12666
call dtoc
mov dh,12
mov dl,37
mov cl,01110100B...
datasg segment
db 10 dup(0)
datasg ends
stacksg segment
dd 2 dup(0)
stacksg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov si,0
mov ax,12666
call dtoc
mov dh,12
mov dl,37
mov cl,01110100B...
阅读全文 |
评论次数(0) |
浏览次数(312) |
所属类型(默认类型)
[2011-07-23 02:37] 实验10.2
assume cs:codesg,ss:stacksg
stacksg segment
db 16 dup(0)
stacksg ends
codesg segment
start:
mov ax,0FFFFH
mov dx,0FFFFH
mov cx,0A00H
call divdw
mov ax,4c00H
int 21H
;divdw:进行dword/word=dword型除法,不会溢出
;参数:(dx)=被除数高16位,(ax)=被除数低16位,(cx)=除数
;返回:(dx)=商高16位,(ax)=商低16位,(cx)=余数
;栈:...
stacksg segment
db 16 dup(0)
stacksg ends
codesg segment
start:
mov ax,0FFFFH
mov dx,0FFFFH
mov cx,0A00H
call divdw
mov ax,4c00H
int 21H
;divdw:进行dword/word=dword型除法,不会溢出
;参数:(dx)=被除数高16位,(ax)=被除数低16位,(cx)=除数
;返回:(dx)=商高16位,(ax)=商低16位,(cx)=余数
;栈:...
阅读全文 |
评论次数(0) |
浏览次数(314) |
所属类型(默认类型)
[2011-07-23 01:51] 实验10.1
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db 'welcome to masm!',0
datasg ends
stacksg segment
dw 8 dup(0)
stacksg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov si,0
mov sp,16
mov dh,12
mov dl,32
mov cl,01110100B
c...
datasg segment
db 'welcome to masm!',0
datasg ends
stacksg segment
dw 8 dup(0)
stacksg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov si,0
mov sp,16
mov dh,12
mov dl,32
mov cl,01110100B
c...
阅读全文 |
评论次数(0) |
浏览次数(290) |
所属类型(默认类型)