社区
汇编语言
帖子详情
在汇编中:LEA和OFFSET 的具体区别????
hy_number_one
2006-12-16 09:01:34
在汇编中:LEA和OFFSET 的具体区别?????
过了几年,复习怎么搞忘记了哦
...全文
4566
10
打赏
收藏
在汇编中:LEA和OFFSET 的具体区别????
在汇编中:LEA和OFFSET 的具体区别????? 过了几年,复习怎么搞忘记了哦
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Dong
2006-12-20
打赏
举报
回复
LEA = Load Effect Address(上载有效地址)
OffSet (偏离原来的起始地址)
----------------------------
Message
.ASCII "i am guy"
........
MOV $Message,%eax
MOV %eax,%edx
LEA %edx (上载Message)
MOV $2,%edx
这样他的OFFSET 就是2了。偏离值为2
jackanie1982
2006-12-19
打赏
举报
回复
LEA是传送地址的
OFFSET是传送偏移地址
例如:
LEA DS 2000H
OFFSET BI 200H
MOV BX,DS+BI
colinboy
2006-12-19
打赏
举报
回复
OFFSET只能取得用数据定义伪指令定义的变量的有效地址,不能取得一般操作数的有效地址(摘自80x86汇编语言程序设计教程)
MOV BX,OFFSET [BX+200]这句是错误的 应该用LEA BX,[BX+200]
日立奔腾浪潮微软松下联想
2006-12-19
打赏
举报
回复
lea可以进行比较复杂的计算,比如lea eax,[esi+ebx*4],把ebx的值*4,加上esi的值,存入eax中。
mov就不行了。
Silent_Spring
2006-12-19
打赏
举报
回复
offset 比 lea 的指令码短?
我也不知从哪看来的
ymghaym
2006-12-18
打赏
举报
回复
没有区别
hy_number_one
2006-12-16
打赏
举报
回复
那实际效果是一样的嘛,干嘛还要用两个名称不一样,效果一样的关键字
具体应用呢?
大熊猫侯佩
2006-12-16
打赏
举报
回复
LEA BX BUFFER”在实际执行时才会将buffer的地址放入bx
而“MOV BX, OFFSET BUFFER 在编译时就已经计算出buffer的地址为4300(假设),
然后将上句替换为:
mov bx,4300
hy_number_one
2006-12-16
打赏
举报
回复
我想问:指令“LEA BX BUFFER”和“MOV BX, OFFSET BUFFER”有甚么区别?
指令“LEA BX,[BX+200]”和“MOV BX,OFFSET [BX+200]”有什么区别?
大熊猫侯佩
2006-12-16
打赏
举报
回复
lea 是机器指令,offset 是伪指令。查看编译后的文件就会一目了然。
汇编
语言实验字符串位置的查找
Assembly code DATAS SEGMENT cap1 db "p
lea
se input a string",0dh,0ah,"$" cap2 db "plesae input the letter you search",0dh,0ah,"$" str0 db 40,?,40 dup(0), str1 db 40 dup (0) DATAS ENDS STACKS SEGMENT dw 40h dup(?) STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS笑脸ATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX mov dx,
offset
cap1;输出提示“p
lea
se input a string" mov ah,09h int 21h mov dx,
offset
str0;输入一行字符串 ;mov dh,0ah ;此处错误 mov ah,0ah int 21h mov dl,0ah;以下三行是实现换行功能 mov ah,02 int 21h mov dl,13;以下三行是实现回车功能 mov ah,02 int 21h mov dx,
offset
cap2 mov ah,09h int 21h mov ah,01h int 21h
lea
si,str0
lea
di,str1 ;mov dh,dl ;此处错误,输入放在al
中
mov dh,al call search xor dh,dh mov cx,dx ;
lea
di,str0;以下几句是实现依次输入找到的字符串的位置
lea
di,str1; l4: ;loopz l5. ;mov cl,[di] mov dl,byte ptr [di] cmp dl,0 jz l5 add dl,30h mov ah,02h int 21h mov dl,',' mov ah,02h int 21h inc di jmp l4 l5: MOV AH,4CH INT 21H search proc;子程序 pushf push ax ;mov cx,[si+1] ;此处修改 xor cx,cx mov cl,byte ptr[si+1] mov dl,0 mov ax,1 l3:cmp [si+2],dh jnz l1 inc dl mov [di],al inc di l1:inc ax cmp ax,cx ja l2 inc si jmp l3 l2:pop ax popf ret search endp CODES ENDS END START
汇编
语言程序设计练习
汇编
语言程序设计练习。好东西大家共享.1、简述标志寄存器各个位的含义。(2.1) 2、简述8086机器代码格式。 (2.2) 3、分别指出下列指令
中
源操作数和目的操作数的寻址方式。(2.2) (1)MOV SI,100 (2)MOV CX,DATA[SI] (3)MOV [SI],AX (4)PUSHF 4、假定DS=2000H,SS=1500H,SI=00A0H,BX=0100H,BP=0010H,数据变量VAL的偏移地址为0050H,请指出下列指令
中
源操作数字段是什么寻址方式?它的物理地址是多少?(2.2) (1)MOV AX,100H (2)MOV AX,[100H] (3)MOV AX,[BP] (4)MOV AX,VAL[BX][SI] 5、试分别说明下列各指令
中
源操作数和目的操作数使用的寻址方式。(2.2) (1)AND AX,0FFH (2)AND BL,[0FFH] (3)MOV DS,AX (4)CMP [SI],CX (5)MOV DS:[0FFH],CL (6)SUB [BP][SI],AH (7)ADC AX,0ABH (8)OR DX,-35[BX][DI] (9)PUSH DS 6、给定(BX)=637DH (SI)=2A9BH 位移量D=7237H,试确定下列各种寻址方式下的有效地址是什么?(2.2) (1)直接寻址 (2)使用BX的寄存器寻址 (3)使用BX的间接寻址 (4)使用BX的寄存器相对寻址 (5)基址变址寻址 (6)相对基址变址寻址 7、指出下列指令
中
的错误。(2.3) (1)MOV AH,BX (2)MOV [BX],[SI] (3)MOV AX,[SI][DI] (4)MOV BYTE PTR[BX],1000 (5)MOV CS,AX 8、计算下列4条指令
中
操作数的地址并指出执行结果。(2.3) (1) MOV 1[BX+SI],AX (2) MOV 2[BP+SI],BX (3) MOV 3[BX+DI],CX (4) MOV 4[BP+DI],DX 假定执行前: (DS)=1000H, (SS)=2000H, (BX)=300H, (BP)=400H, (SI)=50H, (DI)=60H, (AX)=12H, (CX)=13H, (DX)=15H. 9、指出下列指令的功能。(2.3) MOV BX,
OFFSET
TAB MOV AL,4 XLAT TAB 10、分别指出下列各条指令的功能。(2.3) MOV SI,
OFFSET
NUM
LEA
SI,NUM MOV AX,[SI]
LEA
AX,[SI]
LEA
DI,4[SI]
汇编
实验程序代码 字符串匹配 排序 bios dos
肯定让你不会后悔。。 .MODEL SMALL .STACK .DATA STRING1 DB 'THE FIRST:','$' STRING2 DB 'THE SECOND:','$' STR1 DB 'MATCH','$' STR2 DB 'NOTMATCH','$' BUF1 DB 30,?,30 DUP(?) BUF2 DB 30,?,30 DUP(?) CRLF DB 0AH,0DH,'$' X DW 0000H .CODE .STARTUP MOV DX,
OFFSET
STRING1 MOV AH,9 INT 21H MOV DX,
OFFSET
BUF1 MOV AH,0AH INT 21H MOV DX,
OFFSET
CRLF MOV AH,9 INT 21H MOV DX,
OFFSET
STRING2 MOV AH,9 INT 21H MOV DX,
OFFSET
BUF2 MOV AH,0AH INT 21H MOV DX,
OFFSET
CRLF MOV AH,9 INT 21H MOV CL,BUF1+1 MOV AH,BUF2+1 CMP CL,AH JA BJ1 MOV CL,BUF2+1 MOV AH,BUF1+1
LEA
SI,BUF2+2
LEA
DI,BUF1+2 。 。 。 。 。 。
zxc.rar_ZXC大写_ZXC小写怎么写_sub
小写字母变大写字母(
汇编
语言实现) (2008-05-14 21:57:52) 标签:杂谈 DATA SEGMENT PMT1 DB INPUT Small letter : ,0AH,0DH, $ STR1 DB 40H,0,40H DUP(0) PMT2 DB 0AH,0DH, Display capital letter : ,0AH,0DH STR2 DB 40H DUP(0), $ DATA ENDS STACK1 SEGMENT PARA STACK DW 20h DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV DX,DATA MOV DS,DX MOV DX,
OFFSET
PMT1 MOV AH,09H 提示输入小写字符 INT 21H MOV DX,
OFFSET
STR1 MOV AH,0AH 输入小写字符 INT 21H MOV CL,STR1+1 MOV CH,0
LEA
SI,STR1+2
LEA
DI,STR2 LOP:MOV AL,[SI] SUB AL,20H MOV [DI],AL INC SI INC DI LOOP LOP MOV DX,
OFFSET
PMT2 MOV AH,09H 输出大写字母 INT 21H MOV AH,4CH INT 21H CODE ENDS END START
三级pc上机题库答案
三级PC南开100题 第一题: 一、请编制程序,其功能是:将内存
中
由SOURCE指示的40个字节有符号数组成的数组分成正数和负数两个数组,并求这两个数组的数据个数,结果存放在RESULT指示的内存区域,存放形式为正数个数在前,其后跟正数数组元素,然后是负数个数及负数数组元素。 例如: 内存
中
有 1EH,91H,74H,91H,42H,30H,81H,F3H,18H,25H 结果为 06H,1EH,74H,42H,30H,18H,25H,04H,91H,91H,81H,F3H 部分程序已给出, 其
中
原始数据由过程LOAD从文件INPUT1.DAT
中
读入SOURCE开始的内存单元
中
。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT
中
。 填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行
汇编
,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试
中
若发现整个程序
中
存在错误之处, 请加以修改。 试题程序: ? EXTRN LOAD:FAR,SAVE:FAR N EQU 40 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGMENT SOURCE DB N DUP(0) RESULT DB N+2 DUP(0) NAME0 DB 'INPUT1.DAT',0 NAME1 DB 'OUTPUT1.DAT',0 NDATA DB N DUP(0) PDATA DB N DUP(0) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STAC START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX ;置附加段寄存器
LEA
DX,SOURCE ;数据区起始地址
LEA
SI,NAME0 ;原始数据文件名 MOV CX,N ;字节数 CALL LOAD ;从'INPUT1.DAT'
中
读取数据 ;****BEGIN****
LEA
SI,SOURCE MOV DI,
OFFSET
PDATA ;PDATA为正数数组存放缓冲区首址 MOV BX,
OFFSET
NDATA ;NDATA为负数数组存放缓冲区首址 XOR DX,DX MOV CX,N CLD MAIN1: LODSB TEST AL,_______________ JZ MAIN2 INC DH ;- MOV [BX],AL INC BX _______________ MAIN2: INC DL MOV [DI],AL ;+ INC DI MAIN3: _______ MAIN1
LEA
SI,PDATA
LEA
DI,RESULT MOV [DI],DL INC DI XOR CX,CX MOV CL,DL MAIN4: MOV AL,_______________ MOV [DI],AL INC DI INC SI LOOP _______________ MOV [DI],DH INC DI XOR CX,CX MOV CL,DH MOV BX,
OFFSET
NDATA MAIN5: MOV AL,[BX] MOV [DI],AL INC DI _______________ LOOP MAIN5 ;****END****
LEA
DX,RESULT ;结果数据区首址
LEA
SI,NAME1 ;结果文件名 MOV CX,N+2 ;字节数 CALL SAVE ;保存结果到文件 RET START ENDP CODE ENDS END START
汇编语言
21,458
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章