;welcome to masm! 共16个字符,一行是80个字符,字符串应该从第32列开始显示
;显示3行字符,一共是25行,所以字符串应该从第12行开始显示
;B8000H---B8F9FH是第一页显示的内存,一页中的坐标(行,列)的内存位置的计算:B8000+(行*80+列)*2
assume cs:codesg
data segment
db 'welcome to masm!' ;定义显示的字符
db 02H, 24H, 71H ;定义显示字符的颜色属性
data ends
stack segment
db 16 dup (0)...
- [whfeiya] 这里的IP执行后一样是100,不会再后面又变回0003了估计没有经过DEBUG验证 09/12 17:02
- [mywiil] 二楼的建议包含了很本质的原理,博主反思的对。 06/29 19:14
- [joneui] s: mov [bx], bx 改成s: mov [bx], bl 06/26 21:41
- [游客] (1)移送数据应该字节单位,使用字传送有逻辑问题 (3)楼主的思路没有问题。 06/26 19:37
- [joneui] 谢谢你的指导,是有一个错误 (2) mov ax,1000H mov ss,ax 06/25 22:33
- [mess] 其中有一个错误^_^ 06/21 13:36
- [mouse] 正确。 06/17 16:41
- [mouse] 自己能debug得到正确验证,不多说了。 06/17 16:37
- [mouse] 正确。 06/17 16:36
- [mouse] 正确。 06/17 16:35
[2010-07-15 23:42] 实验9 根据材料编程
阅读全文 |
评论次数(0) |
浏览次数(336) |
所属类型(汇编作业)
[2010-07-15 23:41] 实验8 分析一个奇怪的程序
分析下面的程序,在运行前思考:这个程序可以正确返回吗?
运行后再思考:为什么是这种结果?
通过这个程序加深对相关内容的理解。
assume cs:codesg
codesg segment
mov ax, 4c00H
int 21H
start:mov ax, 0
s:nop
nop
mov di, offset s
mov si, offset s2
mov ax, cs:[si]
mov cs:[di], ax
s0:jmp short s
s1:mov...
运行后再思考:为什么是这种结果?
通过这个程序加深对相关内容的理解。
assume cs:codesg
codesg segment
mov ax, 4c00H
int 21H
start:mov ax, 0
s:nop
nop
mov di, offset s
mov si, offset s2
mov ax, cs:[si]
mov cs:[di], ax
s0:jmp short s
s1:mov...
阅读全文 |
评论次数(0) |
浏览次数(382) |
所属类型(汇编作业)
[2010-07-15 23:41] 检测点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
...
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
...
阅读全文 |
评论次数(0) |
浏览次数(369) |
所属类型(汇编作业)
[2010-07-15 23:41] 检测点9.2
补全编程,利用jcxz指令,实现在内存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
jcxz ok
inc bx
jmp short s
ok:mov dx, bx
mov ax, 4c00H
int 21h
code ends
end start...
assume cs:code
code segment
start:mov ax, 2000H
mov ds, ax
mov bx, 0
s:mov cl, [bx]
mov ch, 0
jcxz ok
inc bx
jmp short s
ok:mov dx, bx
mov ax, 4c00H
int 21h
code ends
end start...
阅读全文 |
评论次数(0) |
浏览次数(333) |
所属类型(汇编作业)
[2010-07-15 23:40] 检测点9.1
(1)程序如下
assume cs:code
data segment
db 3 dup (0)
data ends
code segment
start:mov ax, data
mov ds, ax
mov bx, 0
jmp word ptr [bx+1]
mov ax, 4c00h
int 21h
code ends
end start
若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?
(2)程序如下:
assume cs:code
d...
assume cs:code
data segment
db 3 dup (0)
data ends
code segment
start:mov ax, data
mov ds, ax
mov bx, 0
jmp word ptr [bx+1]
mov ax, 4c00h
int 21h
code ends
end start
若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?
(2)程序如下:
assume cs:code
d...
阅读全文 |
评论次数(0) |
浏览次数(383) |
所属类型(汇编作业)
[2010-07-15 23:39] 第九章、转移指令的原理 笔记
可以修改IP,或同时修改CS和IP的指令统称为转移指令。概括地讲,转移指令就是可以控制CPU执行内存中某处代码的指令。
8086CPU的转移行为有以下几类:
只修改IP时,称为段内转移,比如:jmp ax。
同时修改CS和IP时,称为段间转移,比如:jmp 1000:0
由于转移指令对IP的修改范围不同,段内转移又分为:短转移和近转移
短转移IP的修改范围为-128---127
近转移IP的修改范围为-32768---32767
8086CPU的转移指令分为以下几类:
无条件转移指令(如:jmp)
条件转移指令
循环指令
过程
中...
8086CPU的转移行为有以下几类:
只修改IP时,称为段内转移,比如:jmp ax。
同时修改CS和IP时,称为段间转移,比如:jmp 1000:0
由于转移指令对IP的修改范围不同,段内转移又分为:短转移和近转移
短转移IP的修改范围为-128---127
近转移IP的修改范围为-32768---32767
8086CPU的转移指令分为以下几类:
无条件转移指令(如:jmp)
条件转移指令
循环指令
过程
中...
阅读全文 |
评论次数(0) |
浏览次数(332) |
所属类型(默认类型)
[2010-07-11 19:22] 实验7 寻址方式在结构化数据访问中的应用
assume cs:codesg
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'
;54H
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,59...
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'
;54H
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,59...
阅读全文 |
评论次数(0) |
浏览次数(368) |
所属类型(汇编作业)
[2010-07-11 09:42] 实验6 实践课程中的程序
assume cs:codesg, ss:stacksg, ds:datasg
stacksg segment
dw 0, 0, 0, 0, 0, 0, 0, 0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
start:mov ax, datasg
mov ...
stacksg segment
dw 0, 0, 0, 0, 0, 0, 0, 0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
start:mov ax, datasg
mov ...
阅读全文 |
评论次数(0) |
浏览次数(385) |
所属类型(汇编作业)
[2010-07-10 22:45] 第八章学习笔记
8.1、bx、si、di和bp
1) 在8086CPU中,只有这4个寄存器可以用在”[…]”中来进行内存单元的寻址。
2) 在[…]中,这4个寄存器可以单个出现,或只能以4种组合出现:bx和si、bx和di、bp和si、bp和di。
3) 只要在[…]中使用寄存器bp,而指令中没有显性地给出段地址,段地址就默认在ss中。
8.2、机器指令处理的数据在什么地方
绝大部分机器指令都是进行数据处理的指令,处理大致可分为3类:读取、写入、运算。在机器指令这一层来讲,并不关心数据的值是多少,而关心指令执行前一刻,它将要处理的数据所在的位置。指令在执行前,所要处理的数据可以在3个地方:CPU...
1) 在8086CPU中,只有这4个寄存器可以用在”[…]”中来进行内存单元的寻址。
2) 在[…]中,这4个寄存器可以单个出现,或只能以4种组合出现:bx和si、bx和di、bp和si、bp和di。
3) 只要在[…]中使用寄存器bp,而指令中没有显性地给出段地址,段地址就默认在ss中。
8.2、机器指令处理的数据在什么地方
绝大部分机器指令都是进行数据处理的指令,处理大致可分为3类:读取、写入、运算。在机器指令这一层来讲,并不关心数据的值是多少,而关心指令执行前一刻,它将要处理的数据所在的位置。指令在执行前,所要处理的数据可以在3个地方:CPU...
阅读全文 |
评论次数(0) |
浏览次数(424) |
所属类型(默认类型)
[2010-07-10 22:44] 第七章学习笔记
7.1 and和or指令
(1)and指令:逻辑与指令,按位进行运算
通过该指令可将操作对象的相应位设为0,其他位不变
(2)or指令:逻辑或指令,按位进行或运算
通过该指令可将操作象的相应位设为1,其他位不变
7.2 关于ASCIIA码
7.3 以字符形式给出的数据
可以在汇编程序中,用’……’的方式指明数据是以字符的形式给出的,编译器将把它们转化为相对应的ASCII码。
7.4 大小写转换问题
(1)将小写字母转换成大写字母的方法:and 11011111B(0xDF)
(2)将大写字母转换成小写字母的方法:or 00100000...
(1)and指令:逻辑与指令,按位进行运算
通过该指令可将操作对象的相应位设为0,其他位不变
(2)or指令:逻辑或指令,按位进行或运算
通过该指令可将操作象的相应位设为1,其他位不变
7.2 关于ASCIIA码
7.3 以字符形式给出的数据
可以在汇编程序中,用’……’的方式指明数据是以字符的形式给出的,编译器将把它们转化为相对应的ASCII码。
7.4 大小写转换问题
(1)将小写字母转换成大写字母的方法:and 11011111B(0xDF)
(2)将大写字母转换成小写字母的方法:or 00100000...
阅读全文 |
评论次数(0) |
浏览次数(444) |
所属类型(默认类型)
『 查看更多文章 』