社区
汇编语言
帖子详情
lea dx 和 lea si 的区别
QMCY_jason
2009-05-06 11:25:20
一般保存字符串的地址时都是lea si,str(str是一个字符串)
很偶然 在一个hello world的程序中
看到 这样用lea dx,str,不是很明白
还有就是为什么hello world的结尾要 加一个 $
小弟是初学汇编,还望不要见笑。
...全文
1125
7
打赏
收藏
lea dx 和 lea si 的区别
一般保存字符串的地址时都是lea si,str(str是一个字符串) 很偶然 在一个hello world的程序中 看到 这样用lea dx,str,不是很明白 还有就是为什么hello world的结尾要 加一个 $ 小弟是初学汇编,还望不要见笑。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xd217
2009-05-08
打赏
举报
回复
盗版一楼的,+改点
DOS中断,输出字符串,要求字符串以$结尾['这里应该是DOS中断的要求。'];另外,lea dx, str和lea si, str; 都是将str地址送寄存器,只是一个送dx,另一个送si;
coohai
2009-05-07
打赏
举报
回复
DOS中断中使用它而已,我们只是使用中断,遵从它的规定即可。
如果自己使用指针,自己输出,当然是si好些,但差别不太,就差一个语句mov ?, ?而已;
QMCY_jason
2009-05-07
打赏
举报
回复
[Quote=引用 1 楼 coohai 的回复:]
DOS中断,输出字符串,要求字符串以$结尾;另外,lea dx, str和lea si, str; 都是将str地址送寄存器,只是一个送dx,另一个送si;
这里送到dx,应该是DOS中断的要求吧。
[/Quote]
你的意思是DOS中断要求DX?
我看书上号多的例子都是lea si,str
况且,这里si应该是作为存储器指针使用的,dx好像不能作为存储器指针使用,还是没明白。
nanlingcg
2009-05-07
打赏
举报
回复
1楼说的很详细!
array020
2009-05-07
打赏
举报
回复
就跟调用API似的,都是规定好的。
你也可以自己写个子程序,规定以0结尾。
nokor517
2009-05-07
打赏
举报
回复
学习力呵呵,
coohai
2009-05-07
打赏
举报
回复
DOS中断,输出字符串,要求字符串以$结尾;另外,lea dx, str和lea si, str; 都是将str地址送寄存器,只是一个送dx,另一个送si;
这里送到dx,应该是DOS中断的要求吧。
汇编打字游戏
CODE SEGMENT ASSUME DS:DATA, CS:CODE, SS:STACK START: MOV AX, DATA MOV DS, AX MOV CX, 10 MOV
SI
, 0 LP:
LEA
DX
, N CALL PRINT MOV
DX
, [STR+
SI
] CALL PRINT
LEA
DX
, N CALL PRINT
LEA
DX
, MSG CALL PRINT SCANF BUF
LEA
DX
, N CALL PRINT MOV
DX
, [STR+
SI
]
LEA
DI, BUF+2 CALL strcmp CMP BX, 0 JNE EQUIL
LEA
DX
, NO CALL PRINT JMP CONTINUE EQUIL:
LEA
DX
, YES CALL PRINT CONTINUE: ADD
SI
, 2
LEA
DX
, N CALL PRINT LOOP LP MOV AH, 4CH INT 21H PRINT PROC NEAR ; 相当于 C 语言的 printf PUSH AX MOV AH, 09H INT 21H POP AX RET PRINT ENDP strcmp PROC NEAR ; 相当于 C 语言的 strcmp() PUSH AX PUSH CX PUSH
DX
PUSH
SI
PUSH DI XOR CX, CX MOV BX, 1 MOV
SI
,
DX
MOV AH, BYTE PTR [DI] CMP AH, '$' JE EXIT LP2: MOV AH, BYTE PTR [DI] INC DI CMP AH, '$' JZ RETURN MOV AL, BYTE PTR [
SI
] INC
SI
CMP AL, AH JNZ LP2 JZ EXIT RETURN: XOR BX, BX JMP EXIT
经典汇编程序实例21例
案例1判断闰年程序 data segment ;定义数据段 infon db 0dh,0ah,'P
lea
se input a year: $' Y db 0dh,0ah,'This is a
lea
p year! $' N db 0dh,0ah,'This is not a
lea
p year! $' w dw 0 buf db 8 db ? db 8 dup(?) data ends stack segment stack db 200 dup(0) stack ends code segment assume ds:data,ss:stack,cs:code start:mov ax,data mov ds,ax
lea
dx
,infon ;在屏幕上显示提示信息 mov ah,9 int 21h
lea
dx
,buf ;从键盘输入年份字符串 mov ah,10 int 21h mov cl, [buf+1]
lea
di,buf+2 call datacate call ifyears jc a1
lea
dx
,n mov ah,9 int 21h jmp exit a1:
lea
dx
,y mov ah,9 int 21h exit: mov ah,4ch int 21h datacate proc near; push cx; dec cx
lea
si
,buf+2 tt1: inc
si
loop tt1 ;
lea
si
,cx[di] pop cx mov dh,30h mov bl,10 mov ax,1 l1: push ax sub byte ptr [
si
],dh mul byte ptr [
si
] add w,ax pop ax mul bl dec
si
loop l1 ret datacate endp ifyears proc near push bx push cx push
dx
mov ax,w mov cx,ax mov
dx
,0 mov bx,4 div bx cmp
dx
,0 jnz lab1 mov ax,cx mov bx,100 div bx cmp
dx
,0 jnz lab2 mov ax,cx mov bx,400 div bx cmp
dx
,0 jz lab2 lab1: clc jmp lab3 lab2: stc lab3: pop
dx
pop cx pop bx ret ifyears endp code ends end start
汇编语言8086--清华大学出版社答案
8086汇编语言答案(清华大学出版社) 3.2 (1) ADD
DX
, BX (2) ADD AL, [BX+
SI
] (3) ADD [0B2H+BX], CX (4) ADD [0524H], 2A59H (5) ADD AL, 0B5H 3.3 (1)
LEA
BX, BLOCK+10 MOV
DX
, [BX] (2) MOV
SI
, 10 MOV
DX
, BLOCK[
SI
] (3)
LEA
BX,BLOCK MOV
SI
, 10 MOV
DX
, [BX+
SI
] 。。。。。。。。 4.1 (1) 两个操作数的类型不匹配。 (2) 不允许在两个存储单元之间直接传送数据。 (3)
SI
和DI不能同时使用。 (4) AX不需要使用段跨越前缀。 (5) 两个操作数的类型不匹配。 (6) OFFSET 只能与简单的符号地址相连,不能与MYDAT[
SI
]相连。 (7) CS不能作为目的操作数。 (8) 两个操作数的类型不匹配。 。。。。。。。。。
微机原理与接口技术习题!!
SEG SEGMENT DATA1 DB 3 DATA2 DB 3,?,3 DUP(?) ALFMON DB '???','$' MONTAB DB 'JAN','FEB','MAR','APR','MAY','JUN' DB 'JUL','AUG','SEP','OCT','NOV','DEC' DSEG ENDS ; SSEG SEGMENT STACK 'STACK' DB 100 DUP(?) SSEG ENDS ; CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,ES:DSEG,SS:SSEG ; MAIN PROC FAR START: MOV AX,DSEG MOV DS,AX MOV ES,AX MOV AX,SSEG MOV SS,AX CALL INPUT CALL LOCATE CALL DISPLAY MOV AH,4CH INT 21H MAIN ENDP ; INPUT PROC NEAR PUSH
DX
MOV AH,0AH
LEA
DX
,DATA2 INT 21H MOV AH,DATA2+2 MOV AL,DATA2+3 XOR AX,3030H CMP AH,00H JZ RETURN SUB AH,AH ADD AL,10 RETURN:POP
DX
RET INPUT ENDP ; LOCATE PROC NEAR PUSH
SI
PUSH DI PUSH CX
LEA
SI
,MONTAB DEC AL MUL DATA1 ADD
SI
,AX MOV CX,03H CLD
LEA
DI,ALFMON REP MOVSB POP CX POP DI POP
SI
RET LOCATE ENDP ; DISPLAY PROC PUSH
DX
LEA
DX
,ALFMON MOV AH,09H INT 21H POP
DX
RET DISPLAY ENDP ; CSEG ENDS END START
汇编语言代码_字符串的匹配
字符串的匹配的汇编代码~这是经常有的题目,不论是试验还是笔试,希望有帮助
汇编语言
21,496
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章