本文共 1482 字,大约阅读时间需要 4 分钟。
方法1;将内存中以BUF1开始的十个字节数传送到BUF2开始的是个单元中DATA SEGMENT BUF1 DB 12H,4AH,0F9H,78H,25H,6FH,90H,0FFH,0FAH,87H BUF2 DB 10 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATA MOV DS,AX LEA SI,BUF1 LEA DI,BUF2NEXT: MOV CX,10 MOV [DI],AL; INC SI INC DI DEC CX JNZ NEXT MOV AH, 4CH INT 21HCODE ENDSEND START方法2DATA SEGMENT BUF1 DB 12H,4AH,0F9H,78H,25H,6FH,90H,0FFH,0FAH,87H BUF2 DB 10 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATA MOV DS,AX LEA SI,BUF1 LEA DI,BUF2 MOV CX,10 CLD REP MOVSB MOV AH, 4CH INT 21HCODE ENDSEND START
;将内存BUF单元中的压缩码BCD码56H输出到屏幕上DATA SEGMENT BUF DB 56HDATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATA MOV DS,AX MOV BL,BUF MOV CL,4 ROR BL,CL ;0101 0110 B -->0110 0101 B MOV DL,BL AND DL,0FH ;(DL)=05H ;ADD DL,30H ;(DL)=35H '5' OR DL,30H MOV AH,02H INT 21H ROR BL,CL MOV DL,BL AND DL,0FH ;(DL)=06H OR DL,30H MOV AH,02H INT 21H MOV AH,4CH INT 21H MOV AH, 4CH INT 21HCODE ENDSEND START
汇编语言中都是16进制表示
-U出现反汇编指令 第一列 04AF:0000表示逻辑地址 04AF代码段段地址 0000代码段偏移地址 (每一条指令的偏移地址) 第二列 程序的机器语言指令(目标代码,二进制代码) 第一条指令是3个字节,所有第二条指令是从0003H开始-r 显示14个寄存器的值
第二行倒数8个是flag标志寄存器标志 = 1 = 0
OF OV NV DF DN UP IF EI DI SF NG PL ZF ZR NZ AF AC NA PF PE PO CF CY NC最后一条指令是将要执行的指令
-t单步执行 CD 20 是INT 20H指令 直接 -d ds:0000 出现段前缀 256字节 装填 -t -d ds:0000 出现DS中的数据 -g全部运行程序 -q退出Debug-R 查看、改变CPU寄存器的内容
Debug-D 查看内存中的内容 Debug-E 改写内存中的内容 Debug-U 将内存中的机器指令翻译成汇编指令 Debug-T 执行一条机器指令 Debug-A 以汇编指令的格式在内存中写入一条机器指令转载地址:http://mgrwi.baihongyu.com/