汇编网首页登录博客注册
xuer2016的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
文章收藏
友情链接

[2013-01-03 18:42] 实验9

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 和...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(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) | 浏览次数(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) | 浏览次数(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                                ;程序结束 伪指令 编译器执行
==========...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(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 是一种对特殊内存地址段操作的传送指令,只不过不能在指令中定义传送的内存地...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(2) | 浏览次数(488) | 所属类型(汇编作业)
『 查看更多文章 』