ASSUME DS:DATA,CS:CODE
DATA SEGMENT
DB 'welcome'
DB ' to '
DB 'asmodu!'
DB 0000010B,00010100B,01110001B
DATA ENDS
CODE SEGMENT
START: MOV AX,DATA
MOV DS,AX
MOV AX,0B800H
MOV ES,AX
MOV DI,0
MOV BX,0
MOV SI,0
MOV CX,3
S: PUSH CX ;每次循环处理一行
PUSH BX ;cx 和...
- [xuer2016] 空格可以用条件跳转去掉,有时间再改下 01/03 18:43
- [xuer2016] 最后一题,应该是mov sp,16 11/11 22:47
- [xuer2016] 恩,明白了,谢谢老师 11/04 02:17
- [fpamc] 不是看地址,是看那两条指令的字节数, 11/03 11:46
- [fpamc] 恩~第四章咯。 10/30 21:09
- [fpamc] 记得加H,不然会被认为是10进制。 10/25 20:58
- [fpamc] 做笔记会加深学习的印象。 10/25 20:55
- [xuer2016] 谢谢,我弄错了 应该是 1H * 10H + 偏移地址 10/25 09:45
- [fpamc] 物理地址=起始地址[起始地址=段地址*16(也就是10h)]+偏移地址 10/25 07:29
- [xuer2016] 感谢指出错误 10/20 09:25
[2013-01-03 18:42] 实验9
阅读全文 |
评论次数(1) |
浏览次数(458) |
所属类型(汇编作业)
[2012-12-12 01:58] 第九章笔记
第九章笔记
1.8086 CPU 的转移行为:只修改IP的段内转移和修改IP和CS的段间转移;根据修改IP的范围分为短转移(-128~127)和长转移(-32768~32767)。
2.8086 CPU 的转移指令:
(a)无条件转移
(b)条件转移
(c)循环
(d)过程
(e)中断
3.伪指令 OFFSET:获得段内标号的偏移地址。如 Mov AX,OFFSET S 是将标号s的偏移地址(立即数)放入AX中
4.JMP 无条件转移指令
(a)段内短转移:JMP SHORT 标号 范围:-128~127 功能:编译时算出8位位移 (IP)=(IP)+ 8...
1.8086 CPU 的转移行为:只修改IP的段内转移和修改IP和CS的段间转移;根据修改IP的范围分为短转移(-128~127)和长转移(-32768~32767)。
2.8086 CPU 的转移指令:
(a)无条件转移
(b)条件转移
(c)循环
(d)过程
(e)中断
3.伪指令 OFFSET:获得段内标号的偏移地址。如 Mov AX,OFFSET S 是将标号s的偏移地址(立即数)放入AX中
4.JMP 无条件转移指令
(a)段内短转移:JMP SHORT 标号 范围:-128~127 功能:编译时算出8位位移 (IP)=(IP)+ 8...
阅读全文 |
评论次数(0) |
浏览次数(359) |
所属类型(汇编作业)
[2012-12-08 16:43] 第八章
第八章笔记
1.计算机在处理指令时,必须指明数据的存储位置和长度,否则无法工作
2.只能使用 BX,BP,SI,DI进行[reg]方式的寻址,寄存器间接寻址,4个寄存器可以单独使用,但只能以4种组合方式使用,[BX+SI],[BX+DI],[BP+DI],[BP+SI],使用BP时,若没有显式指明段地址,默认为SS
3.汇编语言用3个概念表示数据的存储位置
(a)立即数 IDATA:直接包含在机器指令中,执行之前存储在CPU的指令缓存器中 eg:MOV AX,43H
(b)寄存器 REG:处理的数据存储在寄存器中,用寄存器名称表示 eg:MOV DS,AX
(c)段地址 SA...
1.计算机在处理指令时,必须指明数据的存储位置和长度,否则无法工作
2.只能使用 BX,BP,SI,DI进行[reg]方式的寻址,寄存器间接寻址,4个寄存器可以单独使用,但只能以4种组合方式使用,[BX+SI],[BX+DI],[BP+DI],[BP+SI],使用BP时,若没有显式指明段地址,默认为SS
3.汇编语言用3个概念表示数据的存储位置
(a)立即数 IDATA:直接包含在机器指令中,执行之前存储在CPU的指令缓存器中 eg:MOV AX,43H
(b)寄存器 REG:处理的数据存储在寄存器中,用寄存器名称表示 eg:MOV DS,AX
(c)段地址 SA...
阅读全文 |
评论次数(0) |
浏览次数(315) |
所属类型(汇编作业)
[2012-11-29 00:11] 第七章实验与笔记
实验6
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db '1. display '
db '2. helloworld '
db '3. replace '
db '4. modify '
datasg ends
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
codesg segment
start : mov ax,stacksg
mov ss,ax
mov sp,10H
mov ax...
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db '1. display '
db '2. helloworld '
db '3. replace '
db '4. modify '
datasg ends
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
codesg segment
start : mov ax,stacksg
mov ss,ax
mov sp,10H
mov ax...
阅读全文 |
评论次数(0) |
浏览次数(354) |
所属类型(汇编作业)
[2012-11-11 07:21] 第六章监测点以及实验
监测点6.1
1.用0:0~0:fH替换代码中的数据,就是cs:0~cs:fH中的数据
assume cs:test
test segment
dw 0123H,4567H,89abH,0cdefH,0123H,4567H,89abH,0cdefH
start: mov ax,0
mov ds,ax
mov bx,0
mov cx,8H
s: mov ax,[bx]
mov cs:[bx],ax ;将ds:bx中内容通过ax转移到cs:bx中
add bx,2
loop s
mov ax,4c00H
int 21H...
1.用0:0~0:fH替换代码中的数据,就是cs:0~cs:fH中的数据
assume cs:test
test segment
dw 0123H,4567H,89abH,0cdefH,0123H,4567H,89abH,0cdefH
start: mov ax,0
mov ds,ax
mov bx,0
mov cx,8H
s: mov ax,[bx]
mov cs:[bx],ax ;将ds:bx中内容通过ax转移到cs:bx中
add bx,2
loop s
mov ax,4c00H
int 21H...
阅读全文 |
评论次数(1) |
浏览次数(463) |
所属类型(汇编作业)
[2012-11-02 15:31] 第五章笔记
1.描述一个内存单元,需要2个信息,单元地址和单元长度。mov ax,[bx],表示将内存单元中的一个字单元传入到ax中,ax指出这是一个字单元,如果是al则表示是一个字节单元,而偏移地址在bx中也可以用常量表示,段地址在ds中。即 (ax)=((ds)*16+(bx));
2.LOOP循环指令:定义cx循环次数和一个loop标记,用标记加“:”在需要循环的程序前标记,结束处使用loop 标记进行跳转。在执行loop 标记时,先将cx减一,即(cx)=(cx)-1,如果cx为0,则执行下一条命令,如果不为0,则跳转到标记开始处,(ip)=(ip)-循环执行的代码长度。
3.mov ax,[...
2.LOOP循环指令:定义cx循环次数和一个loop标记,用标记加“:”在需要循环的程序前标记,结束处使用loop 标记进行跳转。在执行loop 标记时,先将cx减一,即(cx)=(cx)-1,如果cx为0,则执行下一条命令,如果不为0,则跳转到标记开始处,(ip)=(ip)-循环执行的代码长度。
3.mov ax,[...
阅读全文 |
评论次数(2) |
浏览次数(502) |
所属类型(汇编作业)
[2012-10-30 20:05] 第四章笔记
1.汇编代码模版:
===========================================================
assume cs:codesg ;关联代码段 伪指令 编译器执行
codesg segment ;代码段开始 伪指令 编译器执行
move ax,1010H
add ax,22AAH
sub,ax,2034H
mov ax,4c00H ;程序返回 汇编指令
int 21H
codesg ends ;代码段结束 伪指令 编译器执行
end ;程序结束 伪指令 编译器执行
==========...
===========================================================
assume cs:codesg ;关联代码段 伪指令 编译器执行
codesg segment ;代码段开始 伪指令 编译器执行
move ax,1010H
add ax,22AAH
sub,ax,2034H
mov ax,4c00H ;程序返回 汇编指令
int 21H
codesg ends ;代码段结束 伪指令 编译器执行
end ;程序结束 伪指令 编译器执行
==========...
阅读全文 |
评论次数(1) |
浏览次数(457) |
所属类型(汇编作业)
[2012-10-25 16:08] 第三章笔记
1.字单元:由2个地址连续的内存单元组成的16位数据单元,高地址内存单元存放数据的高位字节,低地址内存单元存放数据的低位字节。
2.当使用 MOV ADD SUB 指令对某内存单元进行读写操作时,内存地址用 (数据段DS * 10 + 偏移量)表示。
3.MOV SUB ADD 可以用来在 寄存器,内存单元,段寄存器 之间相互传送数据,规则如下:
MOV DST,SRC
1.源操作数(SRC)可以是累加器,寄存器,存储单元以及立即数(传送指令不改变源操作数)
2.目的操作数(DST)可以是累加器,寄存器,和存储单元。
3.SRC和DST不能同时是段寄存器
4.DST...
2.当使用 MOV ADD SUB 指令对某内存单元进行读写操作时,内存地址用 (数据段DS * 10 + 偏移量)表示。
3.MOV SUB ADD 可以用来在 寄存器,内存单元,段寄存器 之间相互传送数据,规则如下:
MOV DST,SRC
1.源操作数(SRC)可以是累加器,寄存器,存储单元以及立即数(传送指令不改变源操作数)
2.目的操作数(DST)可以是累加器,寄存器,和存储单元。
3.SRC和DST不能同时是段寄存器
4.DST...
阅读全文 |
评论次数(1) |
浏览次数(492) |
所属类型(汇编作业)
[2012-10-25 14:43] 3.2监测点
1.
观察指令,最后的几条指令为PUSH [偏移量],意味着将数据段中某偏移地址内的数据入栈,而数据段DS已定义为1000H,所以我们只要将堆栈段SS定义为目标地址段2000H,SP为 (EH+2H)即可,补全代码如下:
...
MOV AX,2000
MOV SS,AX
MOV SP,10
...
2.同样观察代码最后为pop [偏移量]指令,也就是将SS中的数据传送到数据段中,代码:
...
MOV AX,1000
MOV SS,AX
MOV SP,10
...
PUSH 和 POP 是一种对特殊内存地址段操作的传送指令,只不过不能在指令中定义传送的内存地...
观察指令,最后的几条指令为PUSH [偏移量],意味着将数据段中某偏移地址内的数据入栈,而数据段DS已定义为1000H,所以我们只要将堆栈段SS定义为目标地址段2000H,SP为 (EH+2H)即可,补全代码如下:
...
MOV AX,2000
MOV SS,AX
MOV SP,10
...
2.同样观察代码最后为pop [偏移量]指令,也就是将SS中的数据传送到数据段中,代码:
...
MOV AX,1000
MOV SS,AX
MOV SP,10
...
PUSH 和 POP 是一种对特殊内存地址段操作的传送指令,只不过不能在指令中定义传送的内存地...
阅读全文 |
评论次数(1) |
浏览次数(465) |
所属类型(汇编作业)
[2012-10-24 20:14] 3.1检测点
1.
ds寄存器在程序开始被设置为1H,所以程序中的内存地址 = 1H * 0FH + 偏移量。
ax=2662
bx=e626
ax=e626
ax=2662
bx=d6e6
ax=fd48
ax=2c14
ax=0
ax=00e6
bx=0
bx=0026
ax=000c
2.
CS=2000H, IP=0, DS=1000H, AX=0, BX=0;
执行顺序: 各寄存器状态
MOV AX,6622H //CS=2000H,IP=0003H,AX=6622H,BX=0;
JMP 0FF0:0100 //CS=0ff0H,IP=0100...
ds寄存器在程序开始被设置为1H,所以程序中的内存地址 = 1H * 0FH + 偏移量。
ax=2662
bx=e626
ax=e626
ax=2662
bx=d6e6
ax=fd48
ax=2c14
ax=0
ax=00e6
bx=0
bx=0026
ax=000c
2.
CS=2000H, IP=0, DS=1000H, AX=0, BX=0;
执行顺序: 各寄存器状态
MOV AX,6622H //CS=2000H,IP=0003H,AX=6622H,BX=0;
JMP 0FF0:0100 //CS=0ff0H,IP=0100...
阅读全文 |
评论次数(2) |
浏览次数(488) |
所属类型(汇编作业)
『 查看更多文章 』