汇编语言小知识点

来源:互联网 发布:淘宝卖家衣服轮播图 编辑:程序博客网 时间:2024/06/09 22:52

1.

<span style="font-size:18px;">mov    ah,4chint    21h</span>

mov ah,4ch:把功能号放到AH寄存器.
int    21h:调用.21中断 并且会取功能号并根据功能号运行

比喻:21h就是一个函数,内部有一个switch。

4ch选择执行switch中的哪一条语句。


调用中断21h的4ch号功能。中断21h是DOS系统的系统调用中断,使用ah来选择功能。4ch号功能是退出程序的意思。21中断有很多功能.你要先把功能号放到AH寄存器.然后调用.21中断就会取功能号并根据功能号运行
参考网站:
百度知道
C++博客

2.dw:

DW的功能是分配一个WORD的空间,它前面的符号是地址DW ? 表示分配一个WORD空间,不初始化里面的内容DW 1234H 表示分配一个WORD空间,并填写内容为1234H
参考网站:
百度知道
博客园


3.

1. assume ds:data ,cs:code
2. mov ax,data3. mov ds,ax

assume:

1.assume为我们指定默认的段寄存器。(也就是说,在代码段中可以不用这里指定的默认段寄存器,而自己再指定一个段寄存器)

2.若不使用assume,那么我们在程序中访问数据时必须人为地明确指定相应的段寄存器

也就是说:

1.没有第一句,只有2、3句:正确

2.只有第一句,没有2、3句:错误


参考网址:

CSDN


  情景1:汇编器将你的原代码翻译为二进制机器指令码,它需要知道ds与哪个段相关联,以便为各命名的变量产生正确的地址偏移量,这时用assume ds:data,es:data这种语句来解决.(这种语句不产生机器指令,所以叫伪指令)


  情景2:你写的程序经过汇编和链接制成了可上机执行的机器指令序列,程序装入内存后,要为使用的各寄存器赋初值(亦称:装填),这个初值是由你写的指令来完成的,这就是为什么要用mov ax,data 然后再mov ds,ax.(机器没有mov ds,data这样的指令)


参考网址:

百度贴吧

0 0