汇编语言assume cs:code,ds:datarea 中的:是什么意思
所以汇编时汇编软件会把你写的变量换成偏移地址。而变量是在你假定的段里查找得到偏移地址。一般指令程序放在代码段中,段地址来源于代码段寄存器CS,涉及到一个堆栈操作时,段寄存器为SS,涉及到一个操作数时,段寄存器为DS或者ES。assume
cs:code,ds:datarea就是说明相应的操作所在段寄存器。当DS(ES)不指在assume的指明的段中也可以运行,只是会得到另一个段的相应偏移地址处的内容。例如:
assume
ds:段名1
mov
ds,段2
mov
ax,段1中的第二个变量。最终结果ax保存的是段2中的对应与段1中第二个变量相同地方的东西(注意是db,dw....)过程:编译器是在段1中查找变量名,并把变量转换为偏移地址,但访问时使用ds:偏移地址
这时ds保存的是段2的段地址,所以访问到的是第二个段对应偏移地址的内容。
8088/8086 CPU 工作时,只能访问存储器中的【四个段】。
但是,你在编程时,可以写【许许多多的逻辑段】。
比如十个逻辑段,分别是:SEG1、SEG2、。。。SEG10。
那么,程序执行时,四个段寄存器,分别对应,哪个逻辑段 ?
这就必须使用 assume 来指定其中的四个。
(其余逻辑段,可在程序执行期间,再用 assume 来指定。)
但是,assume,是伪指令,对 CPU 没有任何作用。
这个单词,翻译成中文,也只是“假定”。
而真正的作用,还是需要用“MOV DS,AX”指令来实现。
用汇编语言编写,从键盘输入自己的名字拼音,再输入前先显示:"please en...
dat segment str db "please enter your name:",0dh,0ah,'$'buffer db 20,?,20dup(?)dat ends cod segment assume cs:cod,ds:dat start:mov ax,dat mov ds,ax lea dx,str mov ah,9 int 21h mov dx,offset buffer mov ah,0ah int 21h mov ah,4ch int 21h cod ends end start ...
COD SEGMENT ASSUME DS:DAT,CS:COD MAIN PROC FAR PUSH DS SUB AX...
assume ds:dat,cs:cod ;用伪指令建立连接 main proc far ;定义主程序,far说明是段间转移,就是远程的 push ds;将ds中数据压入堆栈 sub ax,ax push ax mov ax,dat mov ds,ax;这两句是将数据段dat的段地址送到段寄存器ds中 但愿对你有帮助 ...
简易加密解密程序
Assume CS:Code,DS:Code;---; 功能:显示指定地址(Str_Addr)的字符串; 入口:; Str_Addr=字符串地址(要求在数据段); 用法: Output Str_Addr; 用法举例:Output PromptStrOutput MACRO Str_Addr push dx lea dx,Str_Addr mov ah,9 int 21h pop dx EndM;---; 功能:打开指定路径下的文件。若打开成功,...
用汇编语言显示这样的数字组合:第一排是123456789第一列123456789然后从...
斜度不够,不太好看。如果仅仅要求显示 1 ~ 9,共 9 个数字,那么,程序就很简单了,显示一个字符串,就完成了要求。程序如下:DATA SEGMENT MSG1 DB 10, 13 DB ' 0123456789', 10, 13 DB ' 11', 10, 13 DB ' 2 2', 10, 13 DB ' 3 3', 10, 13 DB '...
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEG...
2012-06-02 COD SEGMENT ASSUME DS:DAT,CS:COD MAIN PROC FAR PUSH DS S... 2 2006-07-19 四位诊断卡上留下一些孔,都标有英文(EXE,SEVEN,SEGMENT,LED... 1 2010-12-03 SEGMENT TOO LARGE 错误 10 2009-10-25 segment fault程序段错误 4 2011-11-29 keil编译器出现如下出错提示 :ERROR L...
编写一个程序,使寄存器BL中的高4位与低4位互换.
DAT SEGMENT DAT ENDS COD SEGMENT ASSUME DS:DAT CS:COD MAIN PROC FAR PUSH DS SUB AX,AX PUSH AX MOV AX,DAT MOV DS,AX MOV CL 4 ROR BL CL RET COD ENDS END MAIN