我初学汇编语言,有个小程序,希望大家帮帮忙!!我在线等!!!

我初学汇编语言,有个小程序,希望大家帮帮忙!!我在线等!!!,第1张

ps:引用1楼的

一 、int21h 的一号子命令输入 十号子命令输出 因为此命令对应的是ascii码 利用ascii码相加减 0~30h A~41h 故加11h :

STSG SEGMENT

DW 32DUP()

STSG ENDS

DATA SEGMENT

DB

DATA ENDS

CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE,DS:DATA,SS:STSG

MOV AX,DATA

MOV DS,AX

MOV AH,0

INT 16H

;其实这里可以加个判断范围的代码

ADD AL,11H

MOV AH,2

MOV DL,AL

INT 21H

MOV AX,4C00H

INT 21H

MIAN ENDP

CODE ENDS

END MAIN

二用跳转指令

STSG SEGMENT

DW 32DUP()

STSG ENDS

DATA SEGMENT

CHAR DB 'A','B','C','D','E'

DATA ENDS

CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE,DS:DATA,SS:STSG

MOV AX,DATA

MOV DS,AX

MOV AH,0

INT 16H

;其实这里可以加个判断范围的代码

MOV BX,30H

LEA SI,CHAR

MOV CX,5;循环5次

L:CMP AL,BX

JZ A

INC BX

INC SI

LOOP L

A:MOV AH,2

MOV DL,SI

INT 21H

MOV AX,4C00H

INT 21H

MIAN ENDP

CODE ENDS

END MAIN

DATAS SEGMENT

str1 db 255 dup()

DATAS ENDS

STACKS SEGMENT

db 200 dup()

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

MOV AX,DATAS

MOV DS,AX

MOV SI,OFFSET STR1

MOV CX,100H ;循环次数

AGAIN:

MOV AH,01H

INT 21H

CMP AL,24H ;回车的时候结束

JZ OUT1

MOV [SI],AL ;保持输入的字符串

INC SI

LOOP AGAIN

OUT1:

MOV [SI],AL ;把回车作为结束符号

MOV SI,OFFSET STR1

MOV CX,100H

L1:

MOV BL,[SI]

CMP BL,24H ;检查是否到结束了

JZ OUT2 ;结束就退出

CALL XCHGSTR

INC SI

LOOP L1

OUT2:

MOV CX,100H

MOV SI,OFFSET STR1

L2: MOV AL,[SI]

CMP AL,24H

JZ OUT3

MOV DL,AL

MOV AH,02H

INT 21H

INC SI

LOOP L2

OUT3:

MOV AH,4CH

INT 21H

XCHGSTR:

MOV AL,[SI] ;取出数据

OR AL,20H ;让其第5位为1

MOV [SI],AL ;将其保存

RET

CODES ENDS

END START

这个程序是将不小于256个字母转换的程序,如果你只要10个,你可以在输入10个之后用$来结束就可以了

AL=34H BL=78H

ADD AL ,BL

是指AL+BL->AL(和存在AL)

以后AL=0ACH

DAA是转换压缩BCD码的意思

解释一下:

BCD码是把十六进制当十进制用

如34H 是十进制52 用BCD码表示是0101 0010,前四位表示五,后四位表示二

这样可能回产生进位,

ADC AL,BH

是AL+BH+CF(进位标志)->AL

ORG 0 ;程序入口

START: MOV DPTR,#TABLE ;将数据表首地址送数据指针

LOOP: CLR A ;累加器清0

MOVC A,@A+DPTR ;取表中数据送累加器

CJNE A,#01H,LOOP1 ;如果累加器不等1转LOOP1

JMP START ;转START

LOOP1: MOV P1,A ;累加器值送P1驱动LED显示

MOV R3,#20 ;延时参数20送R3,延时2010毫秒

LCALL DELAY ;调用延时子程序

INC DPTR ;数据指针加1

JMP LOOP ;转LOOP

DELAY: MOV R4,#20 ;外层循环20次

D1: MOV R5,#248 ;内层循环248次

DJNZ R5,$ ;内层循环

DJNZ R4,D1 ;外层循环

DJNZ R3,DELAY ;最外层循环

RET ;子程序延时10毫秒

TABLE: DB 0FEH,0FDH,0FBH,0F7H ;

DB 0EFH,0DFH,0BFH,07FH

DB 0FEH,0FDH,0FBH,0F7H

DB 0EFH,0DFH,0BFH,07FH

DB 07FH,0BFH,0DFH,0EFH

DB 0F7H,0FBH,0FDH,0FEH

DB 07FH,0BFH,0DFH,0EFH

DB 0F7H,0FBH,0FDH,0FEH

DB 00H, 0FFH,00H, 0FFH

DB 01H

END

以上就是关于我初学汇编语言,有个小程序,希望大家帮帮忙!!我在线等!!!全部的内容,包括:我初学汇编语言,有个小程序,希望大家帮帮忙!!我在线等!!!、请教:用汇编语言写一个小程序、请教汇编语言小程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9859870.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存