我有一个问题要编写一个将获取8个字符/数字的代码 它将在它们之间每2个字节交换一次。
示例:
输入451ABD45
ARR = | 34 | 35 | 31 | 41 | 42 | 44 | 34 | 35
NewARR = | 35 | 34 | 41 | 31 | 44 | 42 | 35 | 34
输出54A1DB54
我的代码:
STA SEGMENT STACK
DB 100H DUP (0)
STA ENDS
DATA SEGMENT
MSG DB 'Please Enter 8 Chars : $'
DIM DW 10 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STA
MAIN:
MOV AX, DATA
MOV DS, AX
LEA DX, MSG
MOV AH, 9H
INT 21H
MOV DL, 10
MOV AH, 02H
INT 21H
MOV DL, 13
MOV CX, 8
MOV BX, 0
MOV DX, 0
INPUT:
MOV AH, 1H
INT 21H
MOV AH, 0
MOV DIM[BX], AX
INC BX
LOOP INPUT
MOV CX, 4
MOV BX, 0
EXCHANGE:
MOV DX, DIM[BX] ;0
INC BX ;1
MOV AX, DIM[BX] ;1
DEC BX ;0
MOV DIM[BX], AX ;0
ADD BX, 1 ;1
MOV DIM[BX], DX ;1
INC BX
LOOP EXCHANGE
MOV DL, 10
MOV AH, 02H
INT 21H
MOV DL, 13
MOV CX, 8
MOV BX, 0
MOV DX, 0
PRINT:
MOV DX, DIM[BX]
INC BX
MOV AH, 2H
INT 21H
LOOP PRINT
MOV AX, 4C00H
INT 21H
CODE ENDS
END MAIN
My_input 451ABD45
ARR = | 34 | 35 | 31 | 41 | 42 | 44 | 34 | 35
MY_NewARR = | 35 | 34 | 41 | 35 | 44 | 41 | 35 | 44
My_output 54A5DA5D
我的代码有什么问题,谢谢您的帮助
答案 0 :(得分:2)
您正在加载和存储单词(16位值),而每个字符是一个字节。
例如,在第一次迭代之前,您需要:
DateTimeOffset
在第一次迭代之后,您应该具有以下内容:
ZonedDateTime.ToDateTimeOffset
但是您最终要做的是:
ConvertToLocalTime
以此类推,其余的字符串。
固定且略为简化的交换循环如下所示:
return new ZonedDateTime(instant, timeZone).ToDateTimeOffset();