标签:access offset jmp 设计 line 数据段 dup color 假设
???????????
DATA SEGMENT
WELCOME DB "Please input your string: ",'$'
STR DB 12
DB ?
DB 12 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA SI,WELCOME
MOV DX,SI
MOV AH,09H
INT 21H ;输出welcome字符
MOV DL,0DH ;输出的时候,输出dl的内容
MOV AH,02H ;输出回车
INT 21H
MOV DL,0AH ;0ah是换行
MOV AH,02H ;输出换行
INT 21H
LEA DX,STR
MOV AH,0AH
INT 21H ;输入数据,str字符串
MOV AL,STR+1 ;字符串个数
MOV CX,AL
ADD AL,2
MOV AH,0
MOV SI,AX
MOV STR[SI],'$' ;把$送到字符串末尾
LEA SI,STR
MOV AL,'&' ; 把判断&放到al中
JMP BEGIN
CHANGE: MOV [SI],' '
BEGIN: CMP AL,[SI] ;使用cmp判断
JZ CHANGE ;判断零位,跳转change
LOOP BEGIN
LEA DX,STR
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
使用了循环,指针定位。判断方法是一个个字符比较判断。
DATA SEGMENT
STR1 DB 512 DUP('$')
LEN EQU $-STR1
STR2 DB 512 DUP('$')
TRUE DB 'YES$'
FALSE DB 'NO$'
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX ;设置附加段
;MOV CX,LEN ;设置循环位
MOV DI,OFFSET STR1 ;DI保存str1的偏移地址
MOV SI,OFFSET STR2 ;SI保存str2的偏移地址
MOV DX,OFFSET STR1
MOV AH,0AH ;输入str1
INT 21H
MOV DL,0DH ;回车换行
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DX,OFFSET STR2 ;输入第二个字符
MOV AH,0AH
INT 21H
MOV DL,0DH ;回车换行
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
CLD
MOV CX,LEN
REPZ CMPSB ;进行串操作比较
JZ MATCH ;比较置零位,为0
JNZ NOMATCH ;为1
MATCH: MOV AH,09H
MOV DX,OFFSET TRUE ;如果匹对
INT 21H
JMP DONE
NOMATCH: MOV AH,09H ;如果不匹对
MOV DX,OFFSET FALSE
INT 21H
JMP DONE
DONE: MOV AH,4CH ;返回操作系统
INT 21H
CODE ENDS
END START
该程序,用了字符串判断操作 REPZ CMPSB 该指令比较的是ds:si和es:di所指向的两个字节如果相等,那么继续进行,不相等,推出,标志位1。然后通过判断标志位,判断该字符串是否相等
- CMPSB 是字节串比较
- CMPSW 字串比较
- 将源变址寄存器指向数据段中的一 字节( 或字,或双字)减去目的变址寄存器指向附加段中的一字节( 或 字,或 双 字),不保留相减结果, 但设置标志位:OF、SF、ZF、AF、PF 和 CF。每比较 一次, 根据方向标志 DF 及数据类型对源变址寄存器和目的变址寄存器进行修改。【徐洁. 计算机组成原理与汇编语言程序设计(第4版)】
操作 | 过程 | 操作方向 |
---|---|---|
字节操作( CMPSB ) | SI/ ESI ?( SI/ ESI) ± 1; DI/ EDI ?( DI/ EDI) ± 1 | ( DS:( SI/ ESI )) ? ( ES: ( DI/ EDI )) |
字操作 ( CMPSW ) | SI/ ESI ?( SI/ ESI) ± 2; DI/ EDI ?( DI/ EDI) ± 2 | 同上 |
标签:access offset jmp 设计 line 数据段 dup color 假设
原文地址:https://www.cnblogs.com/Yunrui-blogs/p/11593859.html